Знак числа с плавающей запятой

Есть ли простой способ определить знак числа с плавающей запятой?

Я экспериментировал и придумал следующее:

#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 байта?
  • Старший бит машины - это крайний левый бит (порядок байтов?)

Пожалуйста, поправьте меня, если какое-либо из этих предположений неверно или я что-то пропустил.

10
задан In silico 20 November 2010 в 22:03
поделиться