Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция(Форматы данных).doc
Скачиваний:
12
Добавлен:
11.11.2019
Размер:
454.14 Кб
Скачать

Разбор решений типовых задач

Задача 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ОК.

7