Понимание того, как работают эти числа с плавающей точкой? - PullRequest
0 голосов
/ 10 мая 2018

У меня небольшие затруднения с пониманием, как работают числа с плавающей запятой В частности, в следующих представлениях ниже (исправьте мои ошибки):

  1. Представление 0: это представлено полными 0 битами в битах экспоненты (8 с одинарной точностью и 11 с двойной точностью). Если у меня будут все нули в битах экспоненты, смогу ли я по-прежнему представлять ноль, даже если моя мантисса не полностью равна нулю?

  2. Википедия показывает, что ноль представлен (-1) знаковым битом × 2 ^ {- 126} × 0.significandbits Почему это 2 ^ {- 126}, когда наименьшее значение показателя, которое мы можем достичь, составляет 2 ^ { -127} вместо?

  3. Представление денормальных чисел. Полагаю, что и в этом формате представлены ненормальные числа: (−1) signbit × 2 ^ {- 126} × 0 значимых andbit. Они используются для представления значений ниже, чем наименьшее нормальное число. Я предполагаю, что это 2 ^ {- 127}, но если представление для ненормальных чисел таково, не будут ли ненормальные числа по-прежнему представлять большие значения, чем нормальные?

  4. нормализованные числа: (−1) знаковый бит × 2 ^ {экспонентбиты – 127} × 1 значимые андбиты. Я полагаю, что фактическое представление экспонентбитов выражено от 0 до 255, поскольку они не представлены в форме двух дополнений.

  5. плюс / минус бесконечность, представленная целыми 1 битами в битах экспоненты. Опять же, имеет ли значение ненулевая мантисса, если мы используем это представление для обозначения бесконечности?

1 Ответ

0 голосов
/ 10 мая 2018

За IEEE 754-2008:

  • NaN: Если поле экспоненты - все единицы, а поле значимости и не равно нулю, датум с плавающей точкой - это NaN, независимо от поля знака. Предпочтительно, QNaN имеет ведущий бит значимого и поля 1, а сигнальный NaN имеет 0, но это не требуется.
  • Бесконечно: Если поле экспоненты равно всем единицам, а поле значимостей равно нулю, значение будет равно (−1) с • ∞, где s является знаковым полем. ( Т.е. , + ∞, если знак равен 0, и −∞, если знак равен 1.)
  • Нормальный: Если поле экспоненты не является ни всеми нулями, ни всеми, то базовое значение равно (−1) s • (1 + f • 2 - q ) • 2 e - смещение , где с - поле знака, f - поле значимого, q - число битов в поле значимого, e - поле экспоненты, и смещение - это смещение экспоненты (127 для 32-битной плавающей запятой).
  • Субнормальный: Если в поле экспоненты все нули, а в поле значимости и нет, то это значение (-1) с • (0 + f • 2 - q ) • 2 1 - смещение . Обратите внимание на два отличия от нормального: 0 добавляется к значению вместо 1, а 1 используется для показателя степени (до вычитания смещение ). Это означает, что субнормалы имеют тот же показатель степени, что и наименьшие нормали, но уменьшаются при уменьшении значения.
  • Ноль: Если поле экспоненты - все нули, а поле значимостей - также все нули, то величина данных равна (−1) с • 0 (Обратите внимание, что IEEE 754 различает +0 и -0.)

Показатель степени, используемый с субнормальными значениями, равен 1, а не 0, поэтому числа меняются от (нормальных) 1.000… 000 • 2 1−127 до (субнормальных) 0.111… 111 • 2 1– 127 . Если использовать 0, будет скачок до 0,0111… 1111 • 2 1−127 .

Формула для значений субнормалей работает и для нулей. Таким образом, нули на самом деле не должны быть перечислены отдельно выше.

...