2015-11-12 5 views
0

Я знаю, что в стандарте IEEE 754 допускается деление на ноль. Но я хочу знать, каково его представление в двоичном формате. Например, 0,25 в десятичном значении будет
0 01111101 00000000000000000000000 в двоичном формате. Как насчет 5.0/0.0 или 0.0/0.0 у них есть репрезентация в двоичном формате, и они одинаковы? Спасибо.IEEE 754, деление на ноль

ответ

0

Марк исправил меня, что деление на ноль приводит к положительной или отрицательной бесконечности в IEEE 754-2208.

В статье википедии по этому вопросу, мы находим следующее:

знака = 0 для положительной бесконечности, 1 для отрицательной бесконечности.

предустановленный показатель = все 1 бит.

fraction = все 0 бит.

Источник:IEEE 754 Wikipedia article

Я был неправ, думая, что это приведет к NaN, на котором я подробно рассмотрена ниже.

+ Infinity:

0 11111111 00000000000000000000000 

-Infinity:

1 11111111 00000000000000000000000 

INCORRECT ORIGINAL РЕАКЦИЯ НИЖЕ

Может еще быть тангенциальным интерес, поэтому, оставляя его.


Это приводит к тому, от моего понимания, NaN, пр ** не число *.

На странице Wikipedia на Nan имеется секция кодирования, из которой поступает следующая цитата.

В стандартных форматах хранения с плавающей точкой, совместимых со стандартом IEEE 754, NaN идентифицируются конкретными заранее определенными битовыми шаблонами, уникальными для NaN. Знак бит не имеет значения. Бинарные форматы NaN представлены с экспоненциальным полем, заполненным единицами (как значения бесконечности), и некоторым ненулевым числом в значении (чтобы сделать их отличными от значений бесконечности). В оригинальном стандарте IEEE 754 от 1985 года (IEEE 754-1985) описывались только двоичные форматы с плавающей запятой и не указывалось, как должно отмечаться сигнализированное/тихое состояние. На практике наиболее значимый бит значимости определял, является ли NaN сигналом или тихим. В результате были реализованы две разные реализации с обратными значениями.

Источник:NaN Encoding (Wikipedia)

В статье также идет отметить, что в 2008 году, редакция IEEE 754-2008 добавляет предложенный метод для указания, если NaN должно быть тихо или многословным.

NaN идентифицируется наличием пяти верхних бит поля комбинации после того, как бит знака установлен на единицы. Шестой бит поля - это флаг 'is_quiet'. Стандарт следует за интерпретацией как флаг «is_signaling». То есть бит с сигнализацией/типом равен нулю, если NaN является тихим, и отличным от нуля, если N идентифицируется с помощью сигнализации aN.

В основном, как и прежде, показатель экспоненты - все единицы, а последний бит указывает, является ли он тихим или нет.

Моя интерпретация является то, что NaN, может быть представлено в виде ряда способов, в том числе следующие:

0 11111111 00000000000000000000010 
+1

Пару неточностей: деление ненулевого конечного числа на ноль даст соответствующим образом подписанный бесконечность (а не NaN) при обработке исключений по умолчанию. И второй параграф, который вы цитируете, относится к формату decimal32, а не к формату binary32, который использует OP. (Это только десятичные форматы с плавающей запятой, которые имеют «поле комбинации», которое объединяет информацию об экспоненте и значимости.) –

+0

Спасибо @MarkDickinson, вы совершенно правы. Пересмотрен мой ответ. – Dan