Бинарное представление с плавающей точкой
У меня проблема с пониманием представления с плавающей запятой (показатель мантиссы для знака размещения двух), не могли бы вы проверить, правильно ли я делаю?
-1/7
-1*1/7*2^0=-1*4/7*2^1=-1*4/7*2^2=-1*8/7*2^3
поэтому в двоичном коде это будет выглядеть так:
1 00000011 1.001 001 001 001 001 001 001
1/1357
1*1/1357*2^0=1*2048/1357*2^-11
0 | 11110101 | 1.100 000 100...
-205,34
1,60422*2^7
1| 0000011
1 | ...
Моя главная проблема - когда знать, что показатель отрицателен, не могли бы вы дать мне какие-нибудь советы?
1 ответ
Я полагаю, вы говорите о float
(т.е. IEEE754 binary32)?
В двоичном, точное значение
-1/7 = -1.001001001001001001001001001…2 × 2−3
Во-первых, показатель степени находится в диапазоне [-126,12], поэтому нам не нужно беспокоиться о переполнении или переполнении.
Затем мы округляем значение до 24 бит:
-1.001001001001001001001012 × 2−3
(обратите внимание, что последний бит значения и округлен)
Мы переписываем показатель степени в его смещенной форме (смещение показателя равно 127):
-1.001001001001001001001012 × 2124−127
Затем мы можем напрямую прочитать битовый шаблон:
1|01111100|00100100100100100100101
где:
- знак отрицательный, поэтому бит знака
1
(1 бит) - 124 в двоичном
01111100
(8 бит) - мы отбрасываем неявное ведение 1 из значимого (23 бита)