Pull to refresh

Смешанный десятично-двоичный формат vs IEEE754

Reading time 5 min
Views 5.7K
В предыдущем топике был рассмотрен новый формат представления десятичных чисел с плавающей точкой, который мы назвали смешанным десятично-двоичным форматом (СДДФ).

Данный формат позволяет производить арифметические вычисления на компьютере без использования BCD с такой же точностью, как если бы вычисления велись вручную.
Напомним, что смешанным десятично — двоичным форматом (СДДФ) называется формат представления десятичных чисел с плавающей точкой двоичным кодом, в котором целочисленная мантисса является двоичным эквивалентом своего десятичного значения, а экспонента является двоичным эквивалентом степени числа 10. Вещественное число в СДДФ представляется в виде

$F=SM_{2}10^{e}$


где $M_{2}$ и e — целые двоичные числа. Под двоичным эквивалентом десятичного числа подразумевается двоичный код этого десятичного числа в выбранном формате. Под десятичным эквивалентом двоичного числа подразумевается десятичный код этого двоичного числа.

Сравним основные свойства чисел с плавающей точкой, которые представлены в стандарте IEEE754 и СДДФ. Для простоты рассмотрим 16-разрядное машинное слово. Это так называемый формат половинной точности. Результаты сравнения легко можно масштабировать на случай формата обмена одинарной и двойной точности.

16-разрядное двоичное слово разобьем на следующие поля: S,e,m. Где S-разряд знака числа, e — 5 разрядов смещенной экспоненты, m — 10 разрядов двоичного эквивалента десятичной мантиссы числа. Максимальное двоичное значение смещенной экспоненты, записанной в 5-ти разрядный регистр, будет равно emax=11111, или в десятичном виде emax=31. Смещение в этом случае равно 15.

Итак

1. Мантисса упакованного числа в IEEE754 содержит дробную часть мантиссы числа.

Мантисса числа в СДДФ представляет собой двоичное целое число.

2. Нормализованная мантисса IEEE в распакованном виде имеет вид 1.xxxxxxxxxx. Где x — любая двоичная цифра.

Поскольку мантисса нормализована, ее целая часть в распакованном виде всегда равна 1. Эту единицу можно не хранить в памяти машины. Таким образом, в распакованном виде, с учетом виртуальной единицы, мантисса будет иметь 11 бит.

Нормализованная мантисса в СДДФ является целым двоичным числом равным эквиваленту десятичного числа, которое в нашем случае представлено тремя цифрами: UХХ. Где U — любая десятичная цифра не равная нулю. Х — любая десятичная цифра.

В 10 битах мантиссы может быть представлено максимальное десятичное число 1023. Все целые числа меньше 1023 могут быть гарантировано представлены 10 битами. Следовательно, все целые десятичные числа с мантиссой ≤ 999 могут быть точно представлены 10 битами мантиссы.


3. В IEEE754 максимальная нормализованная двоичная мантисса равна Mmax=1.1111111111= 1.9990234375

Гарантированое количество верных цифр, которое можно представить двоичной 11-ти битной мантиссой равно 3.

Максимальная нормализованная десятичная мантисса в СДДФ равна Mmax=999 или в двоичном виде Mmax= 1 111 100 111. Десятичный эквивалент мантиссы состоит из 3 десятичных цифр. Следовательно, трехзначная мантисса в нашем примере точно представлена в СДДФ 3 значащими десятичными цифрами.

4. В IEEE754 минимальное нормализованное значение мантиссы, при emin=0, будет равно: Mmin=1.0

Минимальная нормализованная мантисса в СДДФ, при emin=0, равна десятичному числу Mmin=100. Или в двоичном виде Mmin= 0001100100.

5. Максимальное положительное десятичное число, которое можно записать в формате IEEE754 со смещенной экспонентой будет

Fmax=2^emax* Mmax= 2^31*1,9990234375 = 4292870144=4.292870144*10^9. Однако, в стандарте максимальным числом считается число Fmax=2^emax=2^31= 4294967296= 4.294967296*10^8. Числа >2^31 считаются равными плюс бесконечности.

Максимальное положительное десятичное число, которое можно точно записать в формате СДДФ со смещенной экспонентой будет

Fmax=10^emax* Mmax=10^31*999=9.99*10^33


6. Диапазон приближенных нормализованных чисел, который может быть представлен в формате IEEE будет равен

Fmax/ Fmin=2^31=4294967296= 4.294967296*10^8

Диапазон точных чисел, который может быть представлен в формате СДДФ будет равен
Fmax/ Fmin=9.99*10^31


7. Шаг изменения двоичного числа в IEEE при смещенной экспоненте (emin=0) равен:
h=0.0000000001=2^-10= 0,0009765625

Шаг изменения десятичного числа в СДДФ при смещенной экспоненте (emin=0) равен:
h=00001100100=100


8. В IEEE754, при смещенной экспоненте, если e=0, то все числа, котрые <1.0 являются субнормальными. Чем меньше субнормальное число, тем оно менее точно представляет свой десятичный эквивалент. Требуются специальные алгоритмы для кодирования субнормальных чисел в формат обмена, раскодирования из формата обмена, а также специальные ловушки для определения субнормальных чисел при арифметических операциях.

В СДДФ субнормальных чисел нет. Все числа представляются с точностью, в нашем случае, до 3 значащих цифр.

9. При несмещенной экспоненте, максимальное нормализованное положительное десятичное число, которое можно записать в формате IEEE754 будет равно
Fmax=2^emax*Mmax= 2^15*1,9990234375 =65504. Однако, в стандарте максимальным числом считается число Fmax=2^emax=2^15= 32768. Числа > 32768 считаются равными плюс бесконечности.

При несмещенной экспоненте, максимальное положительное десятичное число, которое можно записать в СДДФ будет равно

Fmax=10^emax*Mmax =999*10^15= 9,99*10^17


10. При несмещенной экспоненте, минимальное нормализованное положительное десятичное число в формате IEEE754 будет равно Fmin=1.0*2^-15=
3.0517578125*10^-5.

При несмещенной экспоненте, минимальное нормализованное положительное десятичное число, которое можно записать в формате СДДФ будет равно Fmin=100*10^-15=10^-13

11. При несмещенной экспоненте, минимальный шаг двоичного эквивалента десятичного числа в IEEE равен:

h=0.0000000001*2^-15=2^-25= 3,0517578125*10^-5

При несмещенной экспоненте, минимальный шаг в СДДФ совпадает с минимальным числом и равен:

h=001100100*10^-15=10^-13


12. В IEEE754 функция зависимости значения десятичного эквивалента числа Fd от его двоичного значения не является равномерной, т.к. для изменения на 1 младшего разряда десятичной мантиссы числа, как правило, необходима сумма нескольких h, равная машинному Ɛ.
Так, например, если e=0, для Fd1=1.0=1.0000000000 и Fd2=1.1≈1.0001100110 будем иметь
Fd2- Fd1=1.0001100110 -1.0000000000= 0.0001100110= 0.099609375
0.0001100110/h=0.0001100110/0.0000000001=1100110= 102=Ɛ

В СДДФ функция зависимости значения десятичного эквивалента числа Fd от его двоичного значения равномерна. Любое изменение на h двоичного эквивалента мантиссы десятичного числа влечет за собой изменение на 1 младшего разряда десятичного эквивалента числа. Здесь машинное Ɛ=1. Действительно.

Если e=0,
Fd1=100= 0001100100
Fd2=200 =0011001000
Fd2- Fd1=0011001000-0001100100= 0001100100=100= h


В заключение приведем основные характеристики представления вещественных чисел в стандарте IEEE754 и СДДФ для формата обмена, состоящего из 32 разрядов (single-precision в стандарте IEEE754).

Для IEEE754 разряды машинного слова в формате single-precision распределены как S — 1 разряд кода знака, e — 8 разрядов смещенной экспоненты, m — 23 явных разряда мантиссы. В распакованном виде m=24.

Для IEEE754:
Коэффициент смещения экспоненты равен 127 еmax=127. Несмещенный порядок наименьшего нормализованного числа с M=1.0 равен p=e-127+1=-126. Числа < 2^-126 считаются субнормальными.

Минимальное нормализованное число равно Fmin=1.0* 2^-126= 1,1754943508222875079687365372222e-38

Максимальное нормализованное число
Fmax=2^127= 1,7014118346046923173168730371588e+38

Числа, которые превышают значение 2^127 считаются положительной бесконечностью.

Для СДДФ разряды машинного слова распределим следующим образом: S — 1 разряд, e — 7 разрядов, m — 24 разряда. Коэффициент смещения экспоненты равен 63. Тогда

еmax=64
Mmax=9999999
Fmax=9999999*10^64=9.999999*10^70
Fmin=1000000*10^-63=10^-57

Точность представления вещественных десятичных чисел равна 7 значащим десятичным цифрам.
Tags:
Hubs:
+8
Comments 158
Comments Comments 158

Articles