
- •Отделом стандартов Института инженеров по электротехнике и электронике
- •Национальным институтом стандартов сша
- •Дэвид Стивенсон, председатель
- •Введение
- •Содержание
- •Приложение
- •Стандарт ieee для двоичных арифметических операций с плавающей точкой
- •Определения
- •Форматы
- •Округление
- •Операции
- •Пределы десятичного преобразования
- •Пределы верного округления результата десятичного преобразования
- •Бесконечность, NaN, ноль со знаком
- •Исключительные ситуации
- •Прерывания
- •Приложение Рекомендованные Функции и Предикаты
Форматы
Форматы представления чисел с плавающей точкой разделены на 2 группы: базовые и расширенные. Каждая имеет две ширины: одинарную и двойную. Выполнение стандарта позволяет поддерживать комбинации форматов.
3.1 Множество значений. Этот раздел касается только не закодированных числовых значений, представленных в формате. С целью оценки представляемых чисел в выбираемом формате используем три целочисленных параметра:
p – количество разрядов мантиссы (точность);
Emax – максимальный порядок;
Emin – минимальный порядок.
Параметры каждого формата даны в Таблице 1. Для каждого формата справедливо следующее.
Числа имеют вид (-1)s2E(b0*b1b2…bp-1),
где s = 0 или 1;
E = любому целому числу между Emin и Emax включительно;
bi = 0 или 1.
Две бесконечности + ∞ и - ∞.
Хотя бы одно сигнализирующее NaN.
Хотя бы одно простое NaN.
Описание, предшествующее число списком (перечнем) некоторых величин избыточно, например, 20(1,0) = 21(0,1) = 22(0,01) =… . Однако, кодирование таких не равных нулю величин может быть избыточным только в расширенных форматах (3.3).
Ненулевые значения, представленные в виде ±2Emin(0*b1b2…bp-1) называются ненормализованными. Определенные зарезервированные значения порядка могут использоваться для обозначения NaN, ±∞, ±0 и ненормализованных чисел.
Для любой переменной, имеющей нулевое значение, знаковый разряд s может использоваться как еще 1 информационный. Хотя во всех форматы различают представление +0 и -0, знак является значащим при некоторых обстоятельствах, таких как деление на 0, и не является значащим в других. В тексте этого стандарта 0 и ∞ пишут без знака, когда знак не играет роли (безразличен).
Сводная таблица параметров форматов Таблица 1
Параметр
|
Формат |
|||
одинарный |
одинарный расширенный |
двойной |
двойной расширенный |
|
p |
24 |
≥32 |
53 |
≥64 |
Emax |
+127 |
≥+1023 |
+1023 |
≥+16383 |
Emin |
-126 |
≤-1022 |
-1022 |
≤-16382 |
Смещение порядка (bias) |
+127 |
Не регламентируется |
+1023 |
Не регламентируется |
Ширина порядка (бит) |
8 |
≥11 |
11 |
≥15 |
Ширина формата (бит) |
32 |
≥43 |
64 |
≥79 |
3.2 Основные форматы. Числа в одинарном или двойном формате скомпонованы в следующих трех полях.
(1) 1-бит знак S;
(2) смещенный порядок е = E + bias;
(3) дробная часть мантиссы (fraction) f = * b1b2…bp-1.
Область несмещенного порядка E будет включать все целые между Emax двумя величинами Emin и Emax включительно и, кроме того, две резервных величины Emin–1 для кодирования ±0 и ненормализованных чисел, и Emax+1 для кодирования ±∞ и NaNs.
Все параметры указаны в таблице 1. Любое ненулевое численное значение кодируется только одной последовательностью. Поля интерпретируются следующим образом:
3.2.1 Одинарный формат. В этом 32 битном формате число Х делится на поля, показанные на рис.1. Значение V числа определяется по следующим признакам:
1) если e = 255 и f ≠ 0, то V – NaN вне зависимости от S;
2) если e = 255 и f = 0, то V = (-1)S ∞;
3) если 0 < e < 255, то V = (-1)S 2e-127 (1*f );
4) если e = 0 и f ≠ 0, то V = (-1)S 2e-126 (0*f ) (ненормализованные числа);
5) если e = 0 и f = 0, то V = (-1)S 0 (ноль).
3.2.2. Двойной формат. В этом 64 битовом формате число Х делится на поля, как это показано на рис.2. Значение V числа Х определяется следующим образом:
1) если e = 2047 и f ≠ 0, то V – NaN вне зависимости от s;
2) если e = 2047 и f = 0, то V = (-1)S ∞;
3) если 0 < e < 2047, то V = (-1)S 2e-1023 (1*f ) (ненормализованные числа);
4) если e = 0 и f ≠ 0, то V = (-1)S 2e-1022 (0*f);
5) если e = 0 и f = 0, то V = (-1)S 0 (ноль).
3.3. Расширенные форматы. Способ кодирования в одинарных и двойных расширенных форматах зависит от реализации величин рассматриваемых в 3.1 с ограничениями приведенными в Табл.1.
Стандарт предусматривает возможность избыточного кодирования некоторых величин, при условии, если избыточность будет незаметна пользователю в следующих случаях: реализация должна присваивать каждой ненулевой величине уникальный код или не должна различать различные коды одной и той же ненулевой величины.
Реализация может резервировать некоторые битовые строки для особых целей, не описанных в стандарте. Если подобная комбинация выступает в роли операнда, результат операции стандартом не регламентируется.
Одинарный расширенный формат не обеспечивает больший диапазон значений, чем нерасширенный формат с двойной точностью.
3.4. Комбинации форматов. Все реализации соответствующие стандарту должны поддерживать одинарный формат
Рекомендуется также поддержка расширенного формата с наибольшим диапазоном значений соответствующего базовому, и нет необходимости в этом случае поддерживать все другие расширенные форматы. 3