Skip to main content.

5. Форматы

Перевод выполнил Пехотин Е.В.

Источник: DRAFT Standard for Floating-Point Arithmetic P754, с. 17-19 // IEEE

5.1 Обзор: форматы и соответствия

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

Определяемые данным стандартом форматы могут быть как предназначенными для обмена (обменными), так и не предназначенными для обмена (необменными):

5.2 Спецификационные уровни

Как продемонстрировано таблицей 1, арифметика чисел с плавающей точкой (рациональных чисел) является методическим приближением арифметики действительных чисел. Арифметика рациональных чисел способна представить только конечное подмножество континуума действительных чисел. Следовательно, некоторые (фундаментальныеприм. пер.) свойства арифметики действительных чисел, как например ассоциативность сложения, в арифметике рациональных чисел работают не всегда.

Таблица 1 – Взаимосвязи между различными уровнями спецификации для определенного формата
Уровень 1{−∞ …   0   … +∞}Extended real numbers.
много-к-одному ↓округление↑ один-ко-многим
Уровень 2{−∞ … −0} ∪ {+0 … +∞} ∪ NaNДанные с плавающей точкой – алгебраически замкнутая система.
один-ко-многим ↓спецификация представления↑ много-к-одному
Уровень 3(sign, exponent, significand) ∪ {−∞, +∞} ∪ qNaNsNaNПредставление данных с плавающей точкой.
один-ко-многим ↓кодирование представления данных↑ много-к-одному
Уровень 40111000…Битовые строки.

Базовой математической структурой арифметики данного стандарта являются расширенные действительные числа, т.е. набор всех возможных действительных чисел, включающий в себя положительную и отрицательную бесконечности. Для заданного формата процесс округления (см. раздел 6; также уместен будет термин «приближение» – прим. пер.) проецирует множество расширенных действительных чисел на множество рациональных величин для заданного формата. Рациональные величины, представляющие собой ноль со знаком, конечное ненулевое число, бесконечность со знаком или не-число (NaN, not-a-number), могут быть представлены в одном или нескольких представлениях данных с плавающей точкой в заданном формате.

Представление данных с плавающей точкой в заданном формате состоит из:

Кодирование отображает представление рациональных величин в битовую строку. Кодирование способно отображать некоторые представления данных с плавающей точкой в более чем одну битовую строку. Многократные битовые строки с NaN’ами могут использоваться для сохранения ретроспективной диагностической информации.

5.3 Набор данных с плавающей точкой

В этом подразделе специфицируются наборы данных с плавающей точкой, представляемые в пределах форматов чисел с плавающей точкой; кодирование представлений данных с плавающей точкой в обменные форматы обсуждается в 5.4 и 5.5. Набор конечных чисел с плавающей точкой, представимых специфическим форматом, определяется следующими целочисленными параметрами:

Значения этих параметров для каждого обменного формата представлены в таблице 2; ограничения на данные параметры для расширенных форматов представлены в таблице 7. Таблица 2 соотносится с обменными форматами по числу бит их кодирования. В пределах каждого формата обязательно должны быть предусмотрены следующие значения:

Эти данные есть единственно необходимыми для представления чисел с плавающей точкой.

До этого момента мантисса m имела научную форму представления и содержала точку сразу после первой цифры числа. В некоторых случаях удобнее рассматривать мантиссу, как целое число; в этом случае конечные числа с плавающей точкой описываются так:

Это представление мантиссы в виде целого c, с соответствующей ему экспонентой q, определяет точной такой же набор нулей и ненулевых чисел с плавающей точкой, как и представление в научной форме. (Для конечных чисел с плавающей точкой, e = q + p – 1 и m = c × b1–p).

Наименьшим положительным нормализованным значением с плавающей точкой является bemin, а наибольшим – bemax × (bb1–p). Ненулевые числа с плавающей точкой, величина которых меньше bemin в заданном формате, называются денормализованными благодаря тому, что их величина лежит между нулем и наименьшей возможной нормализованной величиной. Денормализованные числа выделяются из ряда нормальных чисел из-за их уменьшенной точности, а среди двоичных еще благодаря тому, что их можно закодировать различными методами. Любое конечное число с плавающей точкой является многократной суммой наименьшей денормализованной величины bemin × b1–p.

Для числа с плавающей точкой, имеющего нулевое значение, бит знака является битом дополнительной информации. Хотя у всех форматов имеются различные формы представления +0 и −0, знак нуля является существенных в некоторых особых случаях, таких, как деление на 0, однако более ни в каких других (см. 8.3). Двоичные обменные форматы имеют ровно одно представление как для +0, так и для −0, в то время как десятичные имеют много. В этом стандарте 0 и ∞ пишутся без знака в случае, если его значение неважно.

Таблица 2 – Параметры обменных форматов, задающие числа с плавающей запятой
Двоичные форматы (b=2)Десятичные форматы (b=10)
параметр binary16
хранимый
binary32
базовый
binary64
базовый
binary128
базовый
decimal32
хранимый
decimal64
базовый
decimal128
базовый
p цифр 112453113 71634
emax +15+127+1023+16383 +96+384+6144
emin −14−126−1022−16382 −95−383−6143