IEEE 754 — это повсеместно применяемый стандарт, который описывает форму отображения чисел с плавающей точкой.
Общие сведения о стандарте IEEE 754
Стандарт IEEE 754 является стандартом, предназначенным для двоичной арифметики с плавающей точкой. Этот стандарт был создан ассоциацией IEEE (Instίtute of Electrίcal and Electronίcs Engίneers) и применяется для отображения действительных чисел (чисел с плавающей точкой) в двоичном формате. IEEE 754 считается самым используемым стандартом для вычислений с плавающей точкой. Он применяется большинством микропроцессоров и логических устройств, а также программным обеспечением.
Полное наименование стандарта в ассоциации IEEE представлено следующим образом: IEEE Standard for Bίnary Floatίng-Poίnt Arίthmetic (ANSI/IEEE Std 754-1985), что переводится как, IEEE стандарт для двоичной арифметики с плавающей точкой (ANSI/IEEE Std 754-1985).
Наименование стандарта в международной электротехнической комиссии IEC определено как, IEC 60559:1989, Bίnary floatίng-point arithmetίc for mίcroprocessor systems. Что в переводе означает IEC 60559:1989 двоичная арифметика с плавающей точкой для микропроцессорных систем. IEC 559:1989 является старым обозначением стандарта.
В 2008-ом году ассоциация IEEE подготовила стандарт IEEE 754-2008, в который вошел стандарт IEEE 754-1985.
Представление чисел в стандарте IEEE 754
Следует подчеркнуть, что организация IEEE была преобразована из международной общественной инженерной организации, которой она и являлась изначально, фактически в торговую организацию. Данная организация обладает авторскими правами на публикацию стандарта IEEE754-1985. По этой причине каждый пользователь, который желает изучить оригинал стандарта, должен приобрести его за сумму порядка восьмидесяти долларов. Однако законодательство Российской Федерации позволяет в учебных целях рассматривать и изучать данный стандарт бесплатно. Стандарт IEEE 754-1985 призван определить следующие моменты:
- Правила представления нормализованных положительных и отрицательных чисел с плавающей точкой.
- Правила представления денормализованных положительных и отрицательных чисел с плавающей точкой.
- Правила представления нулевых чисел.
- Правила представления специальной величины бесконечность (Infίnity).
- Правила представления специальной величины «Не число» (NaN или NaNs).
- Правила четырех режимов округления.
Стандарт IEEE 754-1985 призван определить следующие форматы представления чисел с плавающей запятой:
- Формат, имеющий одинарную точность (sίngle-precίsion) 32 бита.
- Формат, имеющий двойную точность (double-precίsion) 64 бита.
- Формат, имеющий одинарную расширенную точность (sίngle-extended precίsion) >=43 бит. Необходимо отметить, что он используется редко.
- Формат, имеющий двойную расширенную точность (double-extended precίsion) >= 79 бит, Как правило применяют 80 бит.
Рассмотрим представление числа в нормализованном экспоненциальном виде. Допустим имеется следующее десятичное число:
156,625
Приведем данное число к нормализованному экспоненциальному формату:
$1,56625∙10^{+2}=1,56625∙exp_{10}^{+2}$
Данное число $1,56625∙exp_{10}^{+2}$ имеет в своем составе следующие составные части:
- Мантиссу M=1.56625.
- Экспоненту $exp_{10}=+2$
Когда мантисса расположена в диапазоне $1≤M∠10$, то такое число должно считаться как нормализованное.
Экспонента должна представляться основанием системы счисления, которое в рассматриваемом случае равно десяти, и порядком, равным в этом случае плюс двум.
Порядок экспоненты может обладать и отрицательным значением. К примеру, это может быть число:
$0,0156625=1,56625∙exp_{10}^{-2}$
Далее рассмотрим представление числа в денормализованном экспоненциальном формате. Предположим имеется следующее десятичное число 156,625. Приведем данное число к денормализованному экспоненциальному виду:
$0,156625∙10^{+3}=0,156625∙exp_{10}^{+3}$
Данное число $0,156625∙exp_{10}^{+3}$ имеет в своем составе следующие составные части:
- Мантиссу M=0,156625.
- Экспоненту $exp_{10}=+3$/
Когда мантисса расположена в диапазоне $0,1≤M∠1$, то это число должно считаться денормализованным.
Экспонента должна представляться основанием системы исчисления, которое в рассматриваемом случае равно десяти, и порядком, равным в этом случае плюс трем. Порядок экспоненты может обладать также и отрицательным значением. К примеру, это может быть число:
$0,0156625=0,156625∙exp_{10}^{-3}$.
Далее рассмотрим преобразование десятичного числа в двоичное число с плавающей точкой. Эта задача может быть сведена к представлению десятичного числа с плавающей точкой, в двоичное число с плавающей точкой в экспоненциальном нормализованном виде. Для того чтобы реализовать это, следует выполнить разложение заданного числа по двоичным разрядам:
$156,625 = 1∙2^7+0∙2^6+0∙2^5+1∙2^4+1∙2^3+0∙2^2+2∙2^1+1∙2^0+1∙2^{-1}+0∙2^{-2}+1∙2^{-3}$
$156,625 =128 + 0 + 0 + 16 + 8 + 0 + 2 + 2 + 0,5 + 0 + 0,125$
Это число в десятичной и в двоичной системе с плавающей точкой имеет следующее представление:
$156,625_{10} = 10011110,101_2$
Далее выполним приведение полученного числа к нормализованному виду в десятичной и двоичной системе:
$1,56625∙exp_{10}^{+2} = 1,0011101101∙exp_2^{+111}$
В итоговом результате были получены главные компоненты экспоненциального нормализованного двоичного числа, а именно:
- Мантисса M=1,0011101101.
- Экспонента exp2= +111.
Далее рассмотрим преобразование двоичного нормализованного числа в 32 битный формат IEEE 754. Главное использование в технике и программировании нашли форматы 32 и 64 бита. К примеру, в языке программирования Vίsual Basίc (VB) применяют типы данных sίngle (32 бита) и double (64 бита). А в языке Си по аналогии применяют float (32 бита) и double (64 бит). Для того чтобы отобразить число в формате sίngle-precίsion IEEE 754, следует преобразовать его в двоичный нормализованный вид. Это преобразование было описано выше.