
- •Ieee 754 - стандарт двоичной арифметики с плавающей точкой
- •Ieee 754-1985 определяет четыре формата представления чисел с плавающей запятой:
- •§3. Основные понятия в представлении чисел с плавающей точкой.
- •3.1 Представление числа в нормализованном экспоненциальном виде.
- •3.2 Представление числа в денормализованном экспоненциальном виде.
- •3.3 Преобразование десятичного числа в двоичное число с плавающей точкой.
- •§4. Описание преобразования чисел по стандарту ieee 754.
- •4.1 Преобразование двоичного нормализованного числа в 32 битный формат ieee 754
- •4.2 Преобразования числа формата 32 бит ieee 754 в десятичное число
- •§5. Формальное представление чисел в стандарте ieee 754 для любого формата точности.
- •§6. Представление денормализованного числа и других чисел в формате ieee 754
- •§7. Сведенья по числам одинарной и двойной точности, представленным в формате ieee 754.
- •7.1 Вычисление границ диапазона для чисел одинарной точности ieee 754
- •7.2 Полный диапазон чисел одинарной точности (32 бит) по стандарту ieee754
- •7.3 Полный диапазон чисел двойной точности (64 бит) по стандарту ieee754
- •7.4 Точность представления вещественных чисел в формате ieee754.
- •7.5 Общие сведенья для чисел одинарной и двойной точности стандарта ieee 754.
- •§8. Округление чисел в стандарте ieee 754.
- •§9. Проблемы компьютерных вычислений, вызванные использованием стандарта ieee754.
- •9.1 Ошибки связанные с точностью представления вещественных чисел в формате ieee754. Опасная редукция.
- •9.2 Ошибки связанные с неправильным приведением типов данных. Дикие ошибки.
- •9.3 Ошибки вызванные сдвигом мантисс. Циклические дыры.
- •9.4 Ошибки вызванные округлением. Грязный ноль.
- •9.5 Ошибки на границе норма/денорма числа. Числа убийцы.
- •§10 Заключение.
4.2 Преобразования числа формата 32 бит ieee 754 в десятичное число
Чтобы записать число в стандарте IEEE 754 или восстановить его, необходимо знать три параметра:
S- бит знака (31-й бит)
E- смещенная экспонента (30-23 биты)
M - остаток от мантиссы (22-0 биты)
Это целые числа которые записанные в числе IEEE 754 в двоичном виде.
Приведём формулу для получения десятичного числа из числа IEEE754 одинарной точности:
где
F - десятичное число
Проверяем наш пример: F =(-1)0∙2(134-127)∙(1+ 1810432 / 223)= 27∙(1+0,2158203125)=128∙1,2158203125=155,625
Вывод этой формулы приводить не буду, всё видно и так. Поясню только (1+ M/223) - это мантисса, единица в этой формуле- это та единица, которую мы выбросили из 23 бит, а остаток мантиссы в десятичном виде находим отношением двух целых чисел - остатка мантиссы к целому.
§5. Формальное представление чисел в стандарте ieee 754 для любого формата точности.
Рис. 1 Представление числа в формате IEEE 754
где:
S - бит знака, если S=0 - положительное число; S=1 - отрицательное число
E - смещенная экспонента двоичного числа; exp2 = E - (2(b-1) - 1) - экспонента двоичного нормализованного числа с плавающей точкой (2(b-1) -1) - заданное смещение экспоненты (в 32-битном ieee754 оно равно +127 см.выше)
M - остаток мантиссы двоичного нормализованного числа с плавающей точкой
Формула вычисления десятичных чисел с плавающей точкой, из чисел представленных в стандарте IEEE754:
(Формула
№1)
Используя формулу №1 вычислим формулы для нахождения десятичных чисел из форматов одинарной (32 бита) и двойной (64 бита) точности IEEE 754:
Рис.2
Формат числа одинарной точности
(single-precision) 32 бита
Рис.3
Формат числа двойной точности
(double-precision) 64 бита
§6. Представление денормализованного числа и других чисел в формате ieee 754
Если применить формулу №1 для вычисления минимального и максимального числа одинарной точности представленного в IEEE754, то получим следующие результаты:
00 00 00 00 hex= 5,87747175411144e-39 (минимальное положительное число)
80 00 00 00 hex=-5,87747175411144e-39 (минимальное отрицательное число)
7f ff ff ff hex= 6,80564693277058e+38 (максимальное положительное число)
ff ff ff ff hex=-6,80564693277058e+38 (максимальное отрицательное число)
Отсюда видно, что невозможно представить число нуль или бесконечность в заданном формате.
Поэтому формула №1 не применяется в следующих случаях:
1.
число IEEE754=00 00 00 00hex считается числом
+0
число
IEEE754=80 00 00 00hex считается числом -0
2.
число IEEE754=7F 80 00 00hex считается числом
+∞
число
IEEE754=FF 80 00 00hex считается числом -∞
3.
числа IEEE754=FF (1xxx)X XX XXhex не считается
числами (NAN), кроме случая п.2
числа IEEE754=7F (1xxx)X XX XXhex не считается
числами (NAN), кроме случая п.2
Число
представленное в битах с 0...22 могут быть
любым числом кроме 0 (т.е.+∞ и -∞ ).
4.
числа IEEE754=(x000) (0000) (0xxx)X XX XXhex считаются
денормализованными числами, за исключением
чисел п.1(то есть -0 и +0)
Формула расчета денормализованных чисел:
(Формула
№2)
Пояснения к исключительным числам:
С нулем понятно. Без него никак нельзя. Смущает только наличие двух нулей. Думаю, это было сделано для симметричности.
- ∞/ +∞ , тоже понятно. Числа, которые больше границ диапазона представления чисел считаются бесконечными.
Не числа NAN(No a Numbers). К ним относятся символы, или результаты недопустимых операций.
Денормализованные числа. Это числа, мантиссы которых лежат в диапазоне 0.1 <= M <1. Денормализованные числа находятся ближе к нулю, чем нормализованные. Денормализованные числа как бы разбивают минимальный разряд нормализованного числа на некоторое подмножество. Сделано так потому, что в технической практике чаще встречаются величины близкие к нулю.