Как представить числа с плавающей запятой в шестнадцатеричных значениях для использования в программе c? - PullRequest
0 голосов
/ 09 мая 2018

Если x - это переменная, определенная как float x, как мне записать плавающее значение в шестнадцатеричном формате?

Я не знаю, что мне делать, пожалуйста, ведите меня.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В C99 формат для инициализации шестнадцатеричного fp равен float a=0x1.abcdefp-5; Экспонента указана в десятичном формате.

0 голосов
/ 10 мая 2018

Stricto sensu, ваш вопрос не имеет никакого смысла. Плавающее число не является целым числом, поэтому оно не может быть представлено в шестнадцатеричном формате (основание 16).

Сначала прочитайте http://floating -point-gui.de / .

Возможно, вы хотите вывести число с плавающей запятой в шестнадцатеричном обозначении . Затем прочитайте документацию printf и, если ваша реализация C совместима с C99, используйте %a, например printf("x=%a\n", x);.

Может быть, вы хотите вывести в шестнадцатеричном виде побитовое представление вашего float. Это будет зависеть от endianess вашего компьютера (и от того факта, что он использует IEEE754 для представления с плавающей запятой), поэтому выходные данные не будут одинаковыми на x86 и на рука. Вы можете использовать union тип :

union {
  unsigned u;
  float f;
} un;
un.f = x;
printf("%#x\n", un.u);

Конечно, это имеет смысл, только если sizeof(unsigned) совпадает с sizeof(float) (и даже в этом случае поведение определяется реализацией).

...