4.4. Интерфейс между C51 и ассемблером
В нормализованной мантиссе старший (наиболее значимый) бит все-
гда равен единице, а следом за ним всегда идет двоичная точка. При
этом нет никакой необходимости сохранять старший бит и двоичную
точку: достаточно сохранить только оставшиеся 23 бита. Это дает до
семи значащих десятичных цифр. Высвободившийся бит используют
для хранения знака мантиссы (
S): 1 – минус, 0 – плюс. На диаграмме
биты порядка обозначены буквой E, а биты мантиссы – буквой M.
áÄÒÅÓ
+0
+1
+2
+3
æÏÒÍÁÔ SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
Машинный нуль в формате с плавающей точкой представлен наи-
меньшим возможным положительным числом из диапазона float:
P =
−127,
M = 1.0,
S = 0. Легко видеть, что машинный нуль представ-
лен шестнадцатеричным кодом 00000000H.
Рассмотрим пример представления числа (
−12.5) в формате float.
Вначале запишем число в нормализованном виде:
−12.5 = −1.5625 × 2
3
.
Очевидно, что порядок
P = 3, а в смещенном коде
E = 130, т.е.
10000010B. Преобразуем модуль мантиссы в двоичный код:
1.5625 = 1 + 1/2 + 1/16 = 1
· 2
0
+
1
· 2
−1
+
1
· 2
−4
.
Мантисса
M = 11001000 00000000 00000000B, знак
S = 1. Старший бит
всегда равен 1, его никогда не сохраняют. Оставшиеся 23 бита мантис-
сы дают 1001000 00000000 00000000B. Собирая все вместе, получаем,
что в формате float число
−12.5 представлено шестнадцатеричным
четырехбайтовым кодом C1480000H.
áÄÒÅÓ
+0
+1
+2
+3
æÏÒÍÁÔ
SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
ä×ÏÉÞÎÙÊ 11000001 01001000 00000000 00000000
HEX
C1
48
00
00
Do'stlaringiz bilan baham: