Введение

Первое издание стандарта IEEE 754 для чисел с плавающей запятой. IEEE 754 1985 – это исторический отраслевой стандарт для представления чисел с плавающей запятой в компьютерах, официально принятый в 1985 году и замененный в 2008 году стандартом IEEE 754 2008, а затем в 2019 году незначительной редакцией IEEE 754 2019. В течение 23 лет он был наиболее широко используемым форматом для вычислений с плавающей запятой. Он был реализован в программном обеспечении в виде библиотек для работы с числами с плавающей запятой, а также в аппаратном обеспечении – в инструкциях многих процессоров и сопроцессоров (FPU). Первой интегральной схемой, реализовавшей проект будущего стандарта IEEE 754 1985, был Intel 8087. IEEE 754 1985 представляет числа в двоичном формате, определяя четыре уровня точности, из которых наиболее часто используются два:

УровеньРазрядностьДиапазон при полной точностиТочностьОдинарная точность32 бита±1,18 до ±3,4Приблизительно 7 десятичных знаковДвойная точность64 бита±2,23 до ±1,80Приблизительно 16 десятичных знаков

Стандарт также определяет представления для положительной и отрицательной бесконечности, «отрицательного нуля», пять исключений для обработки недопустимых результатов, таких как деление на ноль, специальные значения, называемые NaN, для обозначения этих исключений, денормализованные числа для представления чисел, меньших указанных выше, и четыре режима округления.

Денормализованные числа

Вышеописанные представления чисел называются нормализованными, что означает, что неявная старшая двоичная цифра равна 1. Чтобы уменьшить потерю точности при возникновении потери значимости (underflow), стандарт IEEE 754 предусматривает возможность представления чисел, меньших, чем это возможно в нормализованном представлении, путем установки неявной старшей цифры в 0. Такие числа называются денормализованными (или субнормальными). Они содержат меньше значащих цифр, чем нормализованные числа, но обеспечивают постепенную потерю точности, когда результат операции не равен точно нулю, но слишком близок к нулю, чтобы быть представленным нормализованным числом. Денормализованное число представляется с использованием смещенного экспоненты, состоящей из всех нулей, что соответствует экспоненте −126 в одинарной точности (а не −127) или −1022 в двойной точности (а не −1023). В отличие от этого, наименьший смещенный экспонент, представляющий нормализованное число, равен 1 (см. примеры ниже).

Представление не-номеров

Поле экспоненты со смещением заполнено единичными битами, чтобы указать на бесконечность или недопустимый результат вычисления.

НаN

Некоторые операции с числами с плавающей точкой недопустимы, например, извлечение квадратного корня из отрицательного числа. Ситуация, когда достигается недопустимый результат, называется исключением с плавающей точкой. Исключительный результат представляется специальным кодом, называемым NaN (Not a Number – «не число»). Все NaN в стандарте IEEE 754 1985 имеют следующий формат:

знак = 0 или 1;
смещенный экспонент = все биты равны 1;
дробная часть = любые биты, кроме всех нулей (поскольку все нули представляют бесконечность).

Дальность и точность

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

Расширение действительных чисел

Стандарт IEEE использует (и расширяет) аффинно расширенную систему вещественных чисел с отдельными положительной и отрицательной бесконечностями. На этапе разработки рассматривалось включение в стандарт проективно расширенной системы вещественных чисел с единственной беззнаковой бесконечностью, предоставляя программистам возможность выбора режима работы. Однако, чтобы упростить окончательный стандарт, проективный режим был исключён. Процессоры Intel 8087 и Intel 80287 поддерживают этот проективный режим.