Как преобразовать формат IEEE 754 с плавающей запятой одинарной точности в десятичный? - PullRequest
0 голосов
/ 09 марта 2010

Я понимаю, что первый бит - это знак, а следующие 8 бит - это показатель степени. Так что в этом примере у вас будет 1.1001 * 2 ^ -4? Как мне тогда интерпретировать это в десятичной?

0 01111011 10010000000000000000000

Ответы [ 3 ]

2 голосов
/ 09 марта 2010

Поскольку вы уже выяснили, что это (в двоичном формате) 1.1001 * 10 ^ -100, теперь вам просто нужно преобразовать двоичное число в десятичное.

В десятичной системе каждая цифра имеет значение на одну десятую от предыдущей. В двоичном коде каждая цифра имеет значение вдвое меньше, чем перед ней.

Первый 1.1001 * 10 ^ -100 = 0.00011001.

Что такое ...

  0 * 1           0 * 1
+ 0 * 1/2       + 0 * 0.5
+ 0 * 1/4       + 0 * 0.25
+ 0 * 1/8       + 0 * 0.125
+ 1 * 1/16      + 1 * 0.0625
+ 1 * 1/32      + 1 * 0.03125
+ 0 * 1/64      + 0 * 0.015625
+ 0 * 1/128     + 0 * 0.0078125
+ 1 * 1/256     + 1 * 0.00390625 

0,0625 + 0,03125 + 0,00390625 = 0,09765625

Это все, что нужно.

1 голос
/ 09 марта 2010

1.1001b равно 1*1 + 0.5*1 + 0.25*0 + 0.125*0 + 0.0625*1 или 1.5625. Умножьте это на 2**-4 (0.0625), чтобы получить 0.09765625 .

0 голосов
/ 16 февраля 2012

в С:

int fl = *(int*)&floatVar;
...