Бинарное представление с плавающей точкой

У меня проблема с пониманием представления с плавающей запятой (показатель мантиссы для знака размещения двух), не могли бы вы проверить, правильно ли я делаю?

-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 (1 бит)
  2. 124 в двоичном 01111100 (8 бит)
  3. мы отбрасываем неявное ведение 1 из значимого (23 бита)
Другие вопросы по тегам