2. Пример
| Задача:
|
| Перевести число 45 в прямой, обратный и дополнительный код (k = 8)
| Решение:
|
| Сначала переведем десятичное число 45 в двоичную систему счисления. 45
| 2
|
|
|
|
|
| -44
| 22
| 2
|
|
|
|
| 1
| -22
| 11
| 2
|
|
|
|
| 0
| -10
| 5
| 2
|
|
|
|
| 1
| -4
| 2
| 2
|
|
|
|
| 1
| -2
| 1
|
|
|
|
|
| 0
|
|
| Получилось:4510 = 1011012.
Запишем прямой код числа. Первый слева разряд 0 (знак «плюс»). Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа 45 получаем прямой код в виде 0,0101101 (первый слева 0 соответствует знаку, затем следует 0, дополняющий число до 7 разрядов, затем следует само двоичное число). Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково.
| Ответ:
|
| 0,0101101
| Задача:
|
| Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -5610.
| Решение:
|
| Выполним перевод положительного числа 56 в двоичную систему счисления, получим: 5610 = 1110002.
Запишем прямой код числа. Всего в однобайтовом представлении 8 двоичных разрядов. Первый слева разряд – знаковый: 1 – для отрицательного числа. Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа -56 получаем прямой код в виде 1,0111000.
Обратный код отрицательного числа получается из прямого инверсией всех разрядов, за исключением знакового. Получаем: 1,1000111.
Дополнительный код отрицательного числа получается из обратного кода прибавлением к двоичному числу единицы (знаковый разряд в операции не участвует):
1000111
+ 1
_____________
1001000
Получаем: 1,1001000
| Ответ:
|
| Прямой код 1,0111000
Обратный код 1,1000111
Дополнительный код 1,1001000
|
3. Задания
| 1.
| Задача:
|
| Перевести число 12 в прямой, обратный и дополнительный код (k = 8)
| Решение:
|
| Прямой - 0,00001100 Обратный - 00001100 Дополнительный- 00001100
| Ответ:
|
| 0,00001100
| 2.
| Задача:
|
| Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -3510.
| Решение:
|
| Прямой - 00100011 Обратный - 11011100 Дополнительный- 11011101
| Ответ:
|
| 1,0100011/1,1011100/1,011101
| 3.
| Задача:
|
| Задан дополнительный код числа в однобайтовом представлении: 1,1011100. Найти число в десятичной системе счисления.
| Решение:
|
| Перевод 11011100 из двоичной в десятичную систему счисления. Выполним перевод в десятичную систему счисления вот так: 1∙2+ 1∙2+ 0∙2+ 1∙2+ 1∙2+ 1∙2+ 0∙2+ 0∙2= 1∙128+1∙64+0∙32+1∙16+1∙8+1∙4+0∙2+0∙1 = 128+64+0+16+8+4+0+0 = 220 10. Получилось: 11011100 2= 220 10.
| Ответ:
|
| -36
|
1. Теоретический материал
| Сложение и вычитание чисел без знака осуществляется по стандартным алгоритмам для позиционных систем счисления.
При сложении в обратном коде складываются все разряды (включая знаковый) по обычному алгоритму. Результат сложения для k-разрядных чиселв общем виде имеет длину k+1 (старший разряд единица, если при сложении старших разрядов операндов был перенос, иначе – ноль). Значение левого k+1-го разряда прибавляется к младшему разряду результата. В итоге получим k-разрядный битовый набор – сумму чисел в обратном коде. Разность чисел в обратном коде x – y можно свести к операции сложения x+ (–y).
В дополнительном коде для сложения сначала по обычному алгоритму складываются все разряды (включая знаковый), азатем единицу переноса в k+1-й разряд необходимо отбросить.
|
2. Пример
| Задача:
|
| Сложить два числа: А10 = 7, В10 = 16.
| Решение:
|
| Переведем числа в двоичную систему счисления
А2 = +111 = +0111; В2 = +10000.
Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
[A2]п = [A2]ок = [A2]дк = 0|00111; [В2]п = [В2]ок = [В2]дк = 0|10000.
Сложение в обратном или дополнительном коде дает один и тот же результат: +
| 0|
| 00111
| 0|
| 10000
| С2 =
| 0|
| 10111
| С10 =
| 23
|
| Ответ:
|
| 23
| Задача:
|
| Сложить два числа: А10 = +16, В10 = -7 в ОК (обратный код) и ДК (дополнительный код).
| Решение:
|
| Требуется преобразование А+(-В), в котором второй член записывается с учетом его знака:
[A2]п = [A2]ок = [A2]дк = 0|10000;
[В2]п = 1|111 = 1|00111; [В2]ок = 1|11000; [В2]дк = 1|11001
При складывании чисел в обратном и дополнительном кодах получены переносы в знаковый разряд и из знакового разряда. В случае первом случае (обратный код)при переносе из знакового разряда необходимо дополнительно прибавить единицу младшего разряда. Во втором случае (дополнительный код) данный перенос игнорируется.
| Ответ:
|
| | |