Как рассчитать минимальное и максимальное значения для расширенной двойной точности IEEE? - PullRequest
1 голос
/ 24 февраля 2010

Я знаю, что мин и значения:
мин: 3.362... 10-4932
макс: 1.189... 10+4932
и (2^14) * log(2) ~ 4932, что дает мне экспоненциальную часть. Но я не могу понять, мантисса.

1 Ответ

0 голосов
/ 24 февраля 2010

Мантисса имеет неявное начало в один бит. Это позволяет избежать потери одного бита памяти для бита, который всегда равен единице (за исключением уменьшенных значений с плавающей запятой, которые являются особым случаем, когда все показательные биты равны нулю).

Обратите внимание, что неявная первая цифра возможна только в двоичном виде. Например. в десятичном виде у вас может быть 3.14e + 2, и вы не можете просто выбросить первую цифру (3), потому что вы не знаете, какое число (1-9 это было больше.

)

Например, значение с плавающей запятой seeemmmmm будет читаться как (в псевдокоде в стиле C)

(s ? -1 : 1) * ((binary)1mmmmm << ((binary)eee - bias));

Где смещение является константой для этого конкретного типа с плавающей запятой, так что все значения экспоненты (eee) могут быть положительными, а 000 - самым отрицательным показателем.

Таким образом, вы можете вычислить максимальное значение на 0b111111 (на один бит больше, чем в мантиссе), смещенное на максимальное значение (несмещенное) показателя степени. Минимальное значение совпадает с отрицательным знаком.

...