Каково внутреннее представление inf и NaN? - PullRequest
10 голосов
/ 12 марта 2009

Мой друг и я обсуждали, как инфы и NaN хранятся сегодня во время обеда.

Взять, например, Фортран 90. 4-байтовые вещественные числа могут получить значение Inf или NaN. Как это хранится внутри? Предположительно, 4-байтовое действительное число - это число, представленное внутри двоичным числом из 32 цифр. Inf и NaN хранятся как 33-битные двоичные числа?

Ответы [ 2 ]

21 голосов
/ 12 марта 2009

Специально из ссылки Песто :

Стандартное представление IEEE с плавающей запятой одинарной точности требует 32-битного слова, которое может быть представлено в виде нумерации от 0 до 31 слева направо. Первый бит - это знаковый бит, S, следующие восемь бит - это экспоненциальные биты, E, а последние 23 бита - это дробь 'F':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

Значение V, представленное словом, может быть определено следующим образом:

  • Если E=255 и F отличны от нуля, то V=NaN («Не число»)
  • Если E=255 и F равно нулю, а S равно 1, то V=-Infinity
  • Если E=255 и F равно нулю, а S равно 0, тогда V=Infinity
  • Если 0<E<255, то V=(-1)**S * 2 ** (E-127) * (1.F), где "1.F" предназначен для представления двоичного числа, созданного с помощью префикса F с неявным начальным 1 и двоичным точка.
  • Если E=0 и F отличны от нуля, то V=(-1)**S * 2 ** (-126) * (0.F) Эти являются "ненормализованными" значениями.
  • Если E=0 и F равно нулю, а S равно 1, то V=-0
  • Если E=0 и F равно нулю, а S равно 0, тогда V=0
9 голосов
/ 12 марта 2009

Большинство представлений с плавающей запятой основаны на стандарте IEEE, который имеет набор шаблонов , определенный для Inf и NaN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...