Числа одинарной точности
Числа одинарной точности занимают в памяти 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