Введение
Первое издание стандарта IEEE 754 для чисел с плавающей запятой. IEEE 754 1985 – это исторический отраслевой стандарт для представления чисел с плавающей запятой в компьютерах, официально принятый в 1985 году и замененный в 2008 году стандартом IEEE 754 2008, а затем в 2019 году незначительной редакцией IEEE 754 2019. В течение 23 лет он был наиболее широко используемым форматом для вычислений с плавающей запятой. Он был реализован в программном обеспечении в виде библиотек для работы с числами с плавающей запятой, а также в аппаратном обеспечении – в инструкциях многих процессоров и сопроцессоров (FPU). Первой интегральной схемой, реализовавшей проект будущего стандарта IEEE 754 1985, был Intel 8087. IEEE 754 1985 представляет числа в двоичном формате, определяя четыре уровня точности, из которых наиболее часто используются два:
IEEE 754 1985 is a historic industry standard for representing floating point numbers in computers, officially adopted in 1985 and superseded in 2008 by IEEE 754 2008, and then again in 2019 by minor revision IEEE 754 2019. During its 23 years, it was the most widely used format for floating point computation. It was implemented in software, in the form of floating point libraries, and in hardware, in the instructions of many CPUs and FPUs. The first integrated circuit to implement the draft of what was to become IEEE 754 1985 was the Intel 8087. IEEE 754 1985 represents numbers in binary, providing definitions for four levels of precision, of which the two most commonly used are:
LevelWidthRange at full precisionPrecisionSingle precision32 bits±1.18 to ±3.4Approximately 7 decimal digitsDouble precision64 bits±2.23 to ±1.80Approximately 16 decimal digits
The standard also defines representations for positive and negative infinity, a "negative zero", five exceptions to handle invalid results like division by zero, special values called NaNs for representing those exceptions, denormal numbers to represent numbers smaller than shown above, and four rounding modes.
УровеньРазрядностьДиапазон при полной точностиТочностьОдинарная точность32 бита±1,18 до ±3,4Приблизительно 7 десятичных знаковДвойная точность64 бита±2,23 до ±1,80Приблизительно 16 десятичных знаков
IEEE 754 1985 is a historic industry standard for representing floating point numbers in computers, officially adopted in 1985 and superseded in 2008 by IEEE 754 2008, and then again in 2019 by minor revision IEEE 754 2019. During its 23 years, it was the most widely used format for floating point computation. It was implemented in software, in the form of floating point libraries, and in hardware, in the instructions of many CPUs and FPUs. The first integrated circuit to implement the draft of what was to become IEEE 754 1985 was the Intel 8087. IEEE 754 1985 represents numbers in binary, providing definitions for four levels of precision, of which the two most commonly used are:
LevelWidthRange at full precisionPrecisionSingle precision32 bits±1.18 to ±3.4Approximately 7 decimal digitsDouble precision64 bits±2.23 to ±1.80Approximately 16 decimal digits
The standard also defines representations for positive and negative infinity, a "negative zero", five exceptions to handle invalid results like division by zero, special values called NaNs for representing those exceptions, denormal numbers to represent numbers smaller than shown above, and four rounding modes.
Стандарт также определяет представления для положительной и отрицательной бесконечности, «отрицательного нуля», пять исключений для обработки недопустимых результатов, таких как деление на ноль, специальные значения, называемые NaN, для обозначения этих исключений, денормализованные числа для представления чисел, меньших указанных выше, и четыре режима округления.
IEEE 754 1985 is a historic industry standard for representing floating point numbers in computers, officially adopted in 1985 and superseded in 2008 by IEEE 754 2008, and then again in 2019 by minor revision IEEE 754 2019. During its 23 years, it was the most widely used format for floating point computation. It was implemented in software, in the form of floating point libraries, and in hardware, in the instructions of many CPUs and FPUs. The first integrated circuit to implement the draft of what was to become IEEE 754 1985 was the Intel 8087. IEEE 754 1985 represents numbers in binary, providing definitions for four levels of precision, of which the two most commonly used are:
LevelWidthRange at full precisionPrecisionSingle precision32 bits±1.18 to ±3.4Approximately 7 decimal digitsDouble precision64 bits±2.23 to ±1.80Approximately 16 decimal digits
The standard also defines representations for positive and negative infinity, a "negative zero", five exceptions to handle invalid results like division by zero, special values called NaNs for representing those exceptions, denormal numbers to represent numbers smaller than shown above, and four rounding modes.
Денормализованные числа
Вышеописанные представления чисел называются нормализованными, что означает, что неявная старшая двоичная цифра равна 1. Чтобы уменьшить потерю точности при возникновении потери значимости (underflow), стандарт IEEE 754 предусматривает возможность представления чисел, меньших, чем это возможно в нормализованном представлении, путем установки неявной старшей цифры в 0. Такие числа называются денормализованными (или субнормальными). Они содержат меньше значащих цифр, чем нормализованные числа, но обеспечивают постепенную потерю точности, когда результат операции не равен точно нулю, но слишком близок к нулю, чтобы быть представленным нормализованным числом. Денормализованное число представляется с использованием смещенного экспоненты, состоящей из всех нулей, что соответствует экспоненте −126 в одинарной точности (а не −127) или −1022 в двойной точности (а не −1023). В отличие от этого, наименьший смещенный экспонент, представляющий нормализованное число, равен 1 (см. примеры ниже).
Представление не-номеров
Поле экспоненты со смещением заполнено единичными битами, чтобы указать на бесконечность или недопустимый результат вычисления.
НаN
Некоторые операции с числами с плавающей точкой недопустимы, например, извлечение квадратного корня из отрицательного числа. Ситуация, когда достигается недопустимый результат, называется исключением с плавающей точкой. Исключительный результат представляется специальным кодом, называемым NaN (Not a Number – «не число»). Все NaN в стандарте IEEE 754 1985 имеют следующий формат:
знак = 0 или 1;
смещенный экспонент = все биты равны 1;
дробная часть = любые биты, кроме всех нулей (поскольку все нули представляют бесконечность).
biased exponent = all 1 bits. fraction = anything except all 0 bits (since all 0 bits represents infinity).
Дальность и точность
Точность определяется как минимальная разница между двумя последовательными представлениями мантиссы; таким образом, она зависит только от мантиссы, в то время как шаг определяется как разница между двумя последовательными числами.
Расширение действительных чисел
Стандарт IEEE использует (и расширяет) аффинно расширенную систему вещественных чисел с отдельными положительной и отрицательной бесконечностями. На этапе разработки рассматривалось включение в стандарт проективно расширенной системы вещественных чисел с единственной беззнаковой бесконечностью, предоставляя программистам возможность выбора режима работы. Однако, чтобы упростить окончательный стандарт, проективный режим был исключён. Процессоры Intel 8087 и Intel 80287 поддерживают этот проективный режим.