Запишите код действительного числа, интерпретируя его как величину типа Double (8 байтов).
а) -363,15625; б) -487,15625.
Ответ
а) 11000000 01110110 10110010 00000000 00000000 00000000 00000000 00000000; б) 11000000 01110110 01110010 0000 00000000 00000000 00000000 00000000 00000000 00000000.
Решение
-363,15625;
Воспользуемся алгоритмом для кодирования действительного числа:
1) Переводим модуль числа в двоичную систему:
| -363,15625| = 363,15625= 101101011,0010(2);
363 2
-362 181 2
1 -180 90 2
1 -90 45 2
0 -44 22 2
1 -22 11 2
0 -10 5 2
1 -4 2 2
1 -2 1
0
0, 15625*2 0,313(целая часть 0)
0,313*2 0,626(целая часть 0)
0,626*2 1,252(целая часть 1)
1,252*2 0,504(целая часть 0)
2) Нормализуем мантиссу:
101101011,0010(2);= 1,011010110010(2)* 28;
Умножаем на 2 в степени 8, так как сдвинули запятую на 8 разрядов.
М = 011010110010 - мантисса.
Р = 8 - порядок
3) Прибавляем к порядку смещение. Для типа double смещение = 1023.
Рсмещенный = 8 + 1023 = 103110 = 100000001112;
1031 2
-1030 515 2
1 -514 257 2
1 -256 128 2
1 -128 64 2
0 -64 32 2
0 -32 16 2
0 -16 8 2
0 -8 4 2
0 -4 2 2
0 -2 1
0
4) Исходное число отрицательное, то представление знака = 1.
5) В мантиссу вписываем только ее дробную часть
. Для числа с двойной точностью мантисса занимает 64 разряда. Добавляем нули.
01101011 00100000 00000000 00000000 00000000 00000000 00000000 00000000
Запишем число:
11000000 01110110 10110010 00000000 00000000 00000000 00000000 00000000
б) -487,15625.
Воспользуемся алгоритмом для кодирования действительного числа:
1) Переводим модуль числа в двоичную систему:
| -487,15625| = 487,15625=101100111,0010(2);
487 2
-486 243 2
1 -242 121 2
1 -120 60 2
1 -60 30 2
0 -30 15 2
0 -14 7 2
1 -6 3 2
1 -2 1
0
0, 15625*2 0,313(целая часть 0)
0,313*2 0,626(целая часть 0)
0,626*2 1,252(целая часть 1)
1,252*2 0,504(целая часть 0)
2) Нормализуем мантиссу:
101100111,0010(2);= 1,011001110010(2);28;
Умножаем на 2 в степени 8, так как сдвинули запятую на 8 разрядов.
М = 011001110010 - мантисса.
Р = 8 - порядок
3) Прибавляем к порядку смещение