Числа одинарной точности

Числа одинарной точности занимают в памяти 32 бита: один бит знака, восемь битов для порядка со смещением и 23 бита мантиссы с подразумеваемой ведущей единицей.

 

s eeeeeeee fffffffffffffffffffffff

 

Для просмотра в шестнадцатиричном виде обычно используется следущий макрос (С):
#define LO(x) *(int*)&x
x объявлена как float, мы получаем ее адрес как &x, далее говорим, что этот адрес указывает на целое (32-битное целое), и затем мы получаем целочисленное значение, которое выведем при помощи printf("%.8X", LO(x));

Пример:

0x3f800000 = 
= 0011 1111 1000 0000 0000 0000 0000 0000 = 
= 0, 01111111, 00000000000000000000000 = 
= + 2^(0x7f-0x7f) * 1.00000000000000000000000 = 
= 1.0
Пример:
Пусть x = 128 = 0x80 = 1000 0000
В нормализованном виде это `+1.00...0 * 2^7`
Экспонента записывается со смещением 127 - то есть 127 + 7 = 134 = 0x86 = 1000 0110
В мантиссе кроме ведущей единицы ничего нет, таким образом,
x = 0 1000 0110 000...0 = = 0100 0011 0000 ... 0000 =
= 0x43000000

 

Перевод из float ieee-754 в десятичную систему online