
Потехин / Домашняя #1
.doc
Министерство образования Российской Федерации
ТОМСКИЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ
(ТУСУР)
Кафедра телевидения и управления
(ТУ)
CЛОЖЕНИЕ ЧИСЕЛ СО ЗНАКАМИ В ПРЯМЫХ, ОБРАТНЫХ И ДОПОЛНИТЕЛЬНЫХ КОДАХ
Выполнил: студент гр. 166-1
______________Самойлов М.Б.
_________________
Проверил: преподаватель каф. ТУ
______________Потехин В.А.
_________________
Томск
2008
Дано: две пары чисел: 315 и 472, 321 и 481 числа в десятичной системе счисления.
Задание:
-
перевести данные числа в двоичную систему счисления;
-
определить для каждого числа его прямой (
), обратный (
) и дополнительный (
) коды;
-
произвести сложение первой пары чисел в прямых и обратных кодах;
-
произвести сложение второй пары чисел в дополнительных кодах.
Для перевода целых чисел из системы с основанием 10 в систему с основанием 2 необходимо произвести последовательный ряд делений исходного числа на новые основания системы, причем действия производятся в исходной системе счисления. Последовательность остатков, начиная с последнего, дает число в новой системе счисления. Деление производится до тех пор, пока частное не получится меньше основания системы, последнее частное дает старшую степень числа.
31510 = 1·28 + 1·25 +1·24 + 1·23 + 1·21 + 1·20 = 1001110112
100111011 - число 315, записанное в двоичной системе счисления.
|
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
S
S – знаковый показатель, который ставится в начале двоичного кода;
Если
,
то закодированное число положительное;
если
,
то закодированное число отрицательное;
если
,
то
- это положительный знак , а
-
входит в полученный результат; если
,
то
- это отрицательный знак , а
- входит
в полученный результат.
Обратный код числа получают путем простого инвертирования каждого бита прямого кода этого числа.
|
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
S
Дополнительный код получается путем прибавления единицы к биту младшего разряда обратного кода.
- формула, для
вычисления дополнительного кода числа.
Изображения положительных чисел во всех кодах одинаково.
При сложении двух кодов необходимо учитывать:
- в этом случае
пишем в результат сложения, а
переносим в следующий столбец.
- в этом случае
пишем в результат сложения и
переносим в следующий столбец.
Произведем сложение первой пары чисел в прямых и обратных кодах
31510 = 1·28 + 1·25 +1·24 + 1·23 + 1·21 + 1·20 = 1001110112
00100111011
11011000100
11011000101
47210 = 1·28 + 1·27 +1·26 + 1·24 + 1·23 = 1110110002
00111011000
11000100111
11000101000
Возможны 4 комбинации:
,
,
и
.
-
•
•
•
•
•
+
0
0
1
0
0
1
1
1
0
1
1
0
0
1
1
1
0
1
1
0
0
0
0
1
1
0
0
0
1
0
0
1
1
Таким образом
-
•
•
•
•
•
•
+
0
0
1
0
0
1
1
1
0
1
1
1
1
0
0
0
1
0
0
1
1
1
1
1
1
0
1
1
0
0
0
1
0
Получили
.
Обратный код необходимо перевести в
прямой:
-
•
•
•
•
•
+
1
1
0
1
1
0
0
0
1
0
0
0
0
1
1
1
0
1
1
0
0
0
1
0
0
0
1
0
0
1
1
1
0
0
Получили
,
таким образом, мы получили код с «лишней»
цифрой в начале. Чтобы избавиться от
нее, произведем циклический перенос,
т.е. прибавим ее к младшему биту кода
00010011100.
Следовательно
-
•
•
•
+
1
1
0
1
1
0
0
0
1
0
0
1
1
0
0
0
1
0
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
1
Произведем
циклический перенос, т.е. к коду
прибавим 1, стоящую в начале полученной
суммы (
).
Таким образом,
получили:
.
Переведем в прямой код:
Произведем сложение второй пары чисел в дополнительных кодах
32110 = 1·28 + 1·26 + 1·20 = 1010000012
00101000001
11010111110
11010111111
48110 = 1·28 + 1·27 +1·26 + 1·25 + 1·20 = 1111000012
00111100001
11000011110
11000011111
Возможно 4 варианта
такого сложения:
,
,
и
.
-
•
•
•
•
+
0
0
1
0
1
0
0
0
0
0
1
0
0
1
1
1
1
0
0
0
0
1
0
1
1
0
0
1
0
0
0
1
0
Таким образом
-
•
•
•
•
•
+
0
0
1
0
1
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
1
1
0
0
0
0
0
Получили
.
Обратный код необходимо перевести в
прямой, для этого инвертируем обратный
код
и прибавим к нему единицу.
Таким образом
.
|
|
|
|
• |
• |
• |
• |
• |
• |
• |
• |
• |
|
+ |
|
|
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
|
|
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
В этом случае
«лишнюю» цифру кода отбрасываем:
.
Получим:
-
•
•
•
•
•
•
•
•
+
1
1
0
1
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
0
0
1
1
0
1
1
1
1
0
Следовательно,
получили
.
Обратный код необходимо перевести в
прямой, для этого отбрасываем «лишнюю»
цифру полученного кода:
;
инвертируем обратный код
и прибавим к нему единицу.
Таким образом,
.
Вывод:
Произведя сложение
чисел со знаками в прямых и обратных
кодах:
,
,
,
,
сложение чисел в дополнительных кодах,
а также сложение и вычитание
двоично-десятичных чисел в дополнительных
кодах:
,
,
,
,
можем утверждать, что следующие равенства
верны:
,
,
и
.
Отличие между этими методами состоит
в том, что сложение чисел в дополнительных
кодах не имеет циклических переносов
и он более прост в применении.