Какое наибольшее денормализованное и нормализованное число?(64бит, ИЭЭ 754-1985)


Я борюсь с арифметикой с плавающей запятой, потому что я действительно хочу понять эту тему!

Я знаю, что числа могут быть представлены в научной нотации.

Таким образом, для обоих чисел экспонента должна выглядеть следующим образом:

Денормализованное Число: 11....11 Итак (1+1/2 + 1/2^2 + ... + 1/2^52)*2^1023

Нормализованное Число: 11....11 Итак (1+1/2 + 1/2^2 + ... + 1/2^52)*2^1024

Однако я не уверен, что это правильно?

I действительно был бы признателен за ваш ответ!

ПС.: В Википедии дано число !Однако я не знаю, как они до этого додумались...

1 6

1 ответ:

Как вы знаете, формат двойной точности выглядит следующим образом:

Введите описание изображения здесь

Ключ к пониманию денормализованных чисел заключается в том, что они на самом деле не являются числами с плавающей запятой, а вместо этого используют микроформат с фиксированной точкой, используя представления, которые не используются в "нормальном" формате.

нормальные числа с плавающей запятой имеют вид: m*2^e, где e находится путем вычитания смещения из поля экспоненты выше, и m - число между 1 и 2, где биты после "двоичной" точки задаются дробью выше. Число 1 перед двоичной точкой не сохраняется, поскольку известно, что оно всегда равно 1. Поле экспоненты имеет значение от 1 до 2046. Значения 0 (все нули) и 2047 (все единицы) зарезервированы для специального использования.

Все единицы в экспоненциальном поле означают, что у нас есть либо бесконечность, либо NaN (не-число).

Все нули означают, что мы имеем дело сденормальными числами с плавающей запятой. Эти все еще из та же форма, m*2^e, но значения m и e выводятся по-разному. m теперь число между 0 и 1, поэтому перед двоичной точкой вместо 1 для нормальных чисел есть 0. e всегда имеет одно и то же значение: -1022. Таким образом, показатель степени является константой, поэтому я ранее назвал его форматом с фиксированной точкой.

Таким образом, наибольшие возможные значения для каждого из них:

  • нормальный: (1+1/2 + 1/2^2 + ... + 1/2^52)*2^1023 = (2-2^-52)*2^1023 = 1.797...e+308
  • Донормила: (0+1/2 + 1/2^2 + ... + 1/2^52)*2^-1022 = (1-2^-52)*2^-1022 = 2.225...e-308