
Разбор решений типовых задач
Задача 1. Пусть дано побайтовое шестнадцатеричное представление числа C2258000 с одинарной точностью (m=23, p=8). Переведем имеющееся представление в двоичную систему счисления:
1100 0010 0010 0101 1000 0000 0000 0000
Разделим двоичное представление на знак (1 бит), порядок (8 бит) и мантиссу (23 бита):
1 10000100 01001011000000000000000
Знаковый бит, равный 1 показывает, что число отрицательное.
Смещенный порядок 100001002 в десятичном виде соответствует числу 132. Скорректируем порядок: вычтем число 127 (2p-1-1=28-1-1) из 132, получим число 5.
К мантиссе добавим слева скрытую единицу 1,01001011000000000000000, перенесем порядок от скрытой единицы вправо на полученную величину порядка (порядок равен пяти): 101001,011000000000000000.
И, наконец, определим десятичное число: 101001,0112 = 41,37510
Учитывая, что число отрицательное, окончательно имеем -41,375.
Задание 2. Найти десятичный эквивалент числа
а) 100010,1110ПК
Так как число записано в прямом коде, то старший разряд кодирует знак числа 1|00010,1110ПК, следовательно, имеем отрицательное число (в старшем разряде 1). Модуль числа равен 00010,11102. Переведем данное двоичное представление в десятичную систему счисления, получим:
00010,11102=1·21+1·2-1+1·2-2+1·2-3=2,875
Учитывая, что число отрицательное, окончательно получим -2,875.
б) 01010101ДК
Так как число записано в дополнительном коде, то старший разряд кодирует знак числа 0|1010101ДК, следовательно, имеем положительное число (в старшем разряде 0). Значит, дополнительный код числа совпадает с его прямым кодом и для получения десятичного эквивалента числа его просто надо перевести в десятичную систему счисления: 10101012=1·26+1·24+1·22+1·20=85
Таким образом, получили число 85.
в) 11010100ДК
Так как число записано в дополнительном коде, то старший разряд кодирует знак числа 1|1010100ДК, следовательно, имеем отрицательное число (в старшем разряде 1). Значит, для получения модуля числа его предварительно надо преобразовать:
отбросив знаковый разряд, получим число 1010100;
инвертируем все разряды до самой младшей единицы 0101100;
переведем полученное число в десятичную систему счисления: 01011002=44. Получили модуль искомого числа.
Учитывая знак, окончательно получим -44.
г) 10101011ОК
Так как число записано в обратном коде, то старший разряд кодирует знак числа 1|0101011ОК, следовательно, имеем отрицательное число (в старшем разряде 1). Значит, для получения модуля числа его предварительно надо преобразовать:
отбросив знаковый разряд, получим число 0101011;
инвертируем все разряды 1010100;
переведем полученное число в десятичную систему счисления: 10101002=84. Получили модуль искомого числа.
Учитывая знак, окончательно получим -84.
Задание 3. Опередить прямой, обратный и дополнительный восьми битный код представленных десятичных чисел.
а) 41
Так как число положительное, то его прямой, дополнительный и обратный коды совпадают. Переведем 41 в двоичную систему счисления: 41= 1010012. Так как число положительное, то в знаковом разряде должен быть ноль: 0| 101001, так же следует дополнить представление нулем перед самой старшей единицей для получения 8-ми битного представления числа: 0| 0101001 (положительные числа в случае увеличения числа разрядов дополняются слева нулями).
41=00101001ПК=00101001ДК=00101001ОК
б) -41
Так как число отрицательное, то для получения прямого кода числа требуется перевести модуль этого числа в двоичную систему счисления, а затем в знаковый разряд записать 1:
|-41|=41= 1010012=001010012 (получен 8-ми битный код модуля числа)
Записав 1 в знаковый разряд, окончательно получим: -41=10101001ПК.
Так как число отрицательное, то для получения дополнительного кода числа требуется перевести модуль этого числа в двоичную систему счисления, а затем проинвертировать все разряды левее младшей единицы:
|-41|=41= 1010012=001010012 (получен 8-ми битный код модуля числа)
Младшая единица стоит в записи последней, значит, после инвертирования левее стоящих цифр, получим: 11010111.
Таким образом, -41=11010111ДК.
Так как число отрицательное, то для получения обратного кода числа требуется перевести модуль этого числа в двоичную систему счисления, а затем проинвертировать все разряды:
|-41|=41= 1010012=001010012 (получен 8-ми битный код модуля числа)
Проинвертировав все цифры, получим: 11010110.
Таким образом, -41=11010110ОК.