Мантисса с плавающей запятой и основание экспоненты 2

Я пытаюсь понять, как получить мантиссу и показатель степени в этом случае. Вот пример из моей книги.

У меня есть эта формула (-1)^s * (1 + M) * b^E-e = x

s = 0 or 1 (the sign)
M = mantissa
b = base (In this case 2)
E = the exponent of this mantissa
e = 127 (for a 32bits system)

Все еще по книге, для x = 1,602177 * 10^-19, я получаю

S = 0,

М = 0,4777474,

E = 64

что это работает.

1 * 1.4777474 * 2^-63 = 1.60210^-19*

Однако я не знаю, как получить значения для M и E.

Я читал, что E = log b |x| затем M = |x|b^-E

В этом случае E = log2(1,602177*10^-19) = -62,43660 (я использую веб-сайт для базы журнала 2, поэтому я не уверен по поводу результата так пробовал Е=-62 и -63).

M = (1,602177 * 10^-19) * 2^-(-62) = 0,7388737

M = (1,602177 * 10^-19) * 2^-(-63) = 1,4777474

Поправьте меня, если я ошибаюсь, но мантисса - это цифры справа от числа с плавающей запятой. В этом случае 0,4777474 выглядит правильно.

На данный момент у меня E = -63 и M = 0,4777474, но E должно быть 64


person proxima    schedule 01.09.2020    source источник
comment
В этом случае 0,4777474 выглядит правильно. --› Не совсем так. Дробная часть представляет собой диадическое рациональное число, не 0,4777474, а, возможно, 4 007 636/(2^23). .   -  person chux - Reinstate Monica    schedule 01.09.2020


Ответы (1)


У меня Е=-63 и М=0,4777474, но Е должно быть 64

Математически показатель степени равен -63, так как x = 1.602177 * 10^-19 находится в окрестности 2-63. Тем не менее, сохраненное значение представляет собой 8-битный беззнаковый предвзятый показатель степени с двоичный32. Вычтите смещение (-127) из математической экспоненты, чтобы получить смещенную экспоненту.

biased_exponent = expo - bias
64 = -63 - (-127)
person chux - Reinstate Monica    schedule 01.09.2020
comment
Смещение всегда -127? Я этого не знал. Однако для x = pi приведенное выше описание не работает. - person proxima; 02.09.2020
comment
@proxima Существуют особые соображения, когда смещенный показатель степени находится на минимальном/максимальном уровне. Подробнее см. binary32. - person chux - Reinstate Monica; 02.09.2020
comment
Я не могу найти правильный способ найти мантиссу. То, что я сделал, не работает для пи. - person proxima; 02.09.2020