Есть ли простой способ определить знак числа с плавающей запятой?
Я экспериментировал и придумал это:
#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;
}
где (c [3] и 0x10000000) дает значение > 0 для отрицательного числа, но я думаю, что это требует от меня сделать предположения, что:
- Байты машины составляют 8 бит.
- число точек с плавающей точкой составляет 4 байта?
- наиболее значимый бит машины самый левый бит (endianness?)
Пожалуйста, исправьте меня, если какое-либо из этих допущений ошибочно или я пропустил какой-либо.