ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ
Вещественные числа представляются в ПК в форме с плавающей точкой.
Этот формат использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления p в некоторой целой степени n которую называют порядком: R=m*pn
Представление числа в форме с плавающей точкой неоднозначно.
ПРИМЕР
25.324=25324*101=0.0025324*104=2532.4*10-2
В ЭВМ используют нормализованное представление числа в форме с плавывающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0.1p?m<1p
Иначе говоря, мантисса меньше 1 и первая значащая цифра - не 0.
В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не храняться). Следовательно, внутреннее представление вещественного числа сводиться к представлению пары целых чисел: мантиссы и порядка.
ПРИМЕР
4-x байтовая ячейка памяти. В ячейке должна содержаться следующая информация о числе:
- знак числа;
- порядок;
- значащие цифры мантиссы.
± |
МАН |
ТИ |
ССА |
1-й байт |
2-й байт |
3-й байт |
4-й байт |
В старшем бите 1-го байта храняться знак числа: 0 обозначает плюс, 1 - минус.
Оставшиеся 7 бит 1-го байта содержат машинный порядок. В следующих трех байтах храняться значащие цифры мантиссы (24 разряда).
ПРИМЕР
Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.
Решение:
1) Приведем его в двоичную систему счисления с 24 значащими цифрами: 250,187510=1111 1010 , 0011 0000 0000 00002.
2) Запишем в форме нормлизованного двоичного числа с плавающей точкой: 0,1111 1010 0011 0000 0000 0000*1021000. Здесь мантисса, основание системы счисления (210=102) и порядок (810=10002) записаны в двоичной системе.
3) Вычислим машинный порядок в двоичной системе счисления: Mp2= 1000 + 100 0000 =100 1000.
4) Запишем представление числа в 4-х байтовой ячейке памяти с учетом знака числа:
0 |
1001000 |
11111010 |
00110000 |
00000000 |
Шестнадцатеричная форма: 48FA3000.
Пример2: По шестнадцатеричной форме внутреннего представления числа в форме с плавающей точкой C9811000 восстановить само число.
Решение:
1) Перейдем к двоичному представлению числа в 4-х байтовой ячейке, заменив каждую шестнадцатеричную цифру 4-мя двоичными цифрами:
1100 1001 1000 0001 0001 0000 0000 0000
1 |
1001001 |
10000001 |
00010000 |
00000000 |
2) Заметим, что получен код отрицательного числа, поскольку в старшем разряде с номером 31 записана 1. Получим порядок числа: р=10010012 -10000002=10012=910.
3) Запишем в форме нормализованного двоичного числа с плавающей точкой с учетом знака числа:
-0,1000 0001 0001 0000 0000 0000 *21001
4) Число в двоичной системе счисления имеет вид: -100000010,0012.
5) Переведем число в десятичную систему счисления:
-100000010,0012= -(1*28+1*21+1*2-3)= -258,12510
В семи двоичных разрядах помещаются двоичные числа в диапозоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапозоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительным и отрицательным значениеями порядка: от -64 до 63.
Машинный порядок смещен относительно математического и имеет только положительные значения. Смещение выбирается так, чтобы минимальному математическому значению порядка соответствовал нуль.
Связь между машинным порядком (Мр) и математическим (р) в рассматриваемом случае выражается формулой:
Мр = р + 64
Полученная формула записана в десятичной системе. В двоичной системе формула имеет вид: Mp2=p2+10000002
Для записи внутреннего представления вещественного числа в 4-х байтовой ячейке необходимо:
1) перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами;
2) нормализовать двоичное число;
3) найти машинный порядок в двоичной системе счисления;
4) учитывая знак числа, выписать его представление в 4-х байтовом машинном слове.
|