Есть ли простой способ определения знака числа с плавающей запятой?Знак числа с плавающей запятой
Я экспериментировал и пришел с этим:
#include <iostream>
int main(int argc, char** argv)
{
union
{
float f;
char c[4];
};
f = -0.0f;
std::cout << (c[3] & 0x10000000) << "\n";
std::cin.ignore();
std::cin.get();
return 0;
}
где (в [3] & 0x10000000) дает значение> 0 для отрицательного числа, но я думаю, что это требует от меня, чтобы сделать предположение, что:
- байты машины 8 бит большое число
- точки поплавка 4 байта большое?
- наиболее значащий бит аппарата является самый левый бит (порядок байт?)
Пожалуйста, поправьте меня, если какие-либо из этих предположений являются неправильными или если я пропустил какой-либо.
До тех пор, пока мы не узнаем, в какой системе вы находитесь, как мы можем исправить ваше предположение о том, является ли ваша машина большой или маленькой? – jball
мои предположения были обобщены, извините, если это было непонятно. – Rarge
Что случилось с <0? Я знаю, что даже с плавающей запятой 0 может иметь знак, но простой <оператор прост и будет охватывать почти все ваши случаи – hhafez