Операции сложения и вычитания в дополнительном коде.
Операции сложения и вычитания производятся путем арифметического сложения кодов чисел. При вычитании перед выполнением операции для вычитаемого берется дополнение. Результат операции представлен в дополнительном коде.
(С)доп = (А)доп + (В)доп
(С)доп = (А)доп - (В)доп = (А)доп + ((В)доп)доп
Пример: вычислить С=А+В и D=A-B. Исходные числа А[10]=3, В[10]= -4. Сетка n=5.
Определим дополнительный код для А и В.
1. A[10] = 3 1. |B[10]| = 4,
A[2] =11 |B[2]| = 100
2. (A[2])доп = 00011 2. (B[2])доп = 00100
+ 1
Наличие единицы в знаковом разряде результата свидетельствует о том, что результат представляет собой код отрицательного числа. Определим десятичный эквивалент результата. Для этого возьмем дополнение для результата.
(Инверсия) ®00000
+ 1
00001 ® 1[10] Результат равен –1.
Наличие нуля в знаковом разряде результата свидетельствует о том, что результат представляет собой код положительного числа. Определим десятичный эквивалент результата. Для этого достаточно преобразовать двоичный результат в десятичное число. Результат равен +7.
Т.к. разрядная сетка ограничена, то при сложении кодов одинакового знака значение результата может выйти за границы диапазона чисел в данной разрядной сетке. Такая ситуация называется переполнением и обнаруживается по одному из признаков:
1. Знаковые разряды слагаемых одинаковы, а знак результата противоположный.
2. Наличие переноса в знаковый разряд и отсутствие переноса из знакового разряда.
Знак |
Этот признак легко реализуется аппаратным способом в сумматоре. Обычно при возникновении переполнении формируется специальный сигнал. Однако во многих ЭВМ этот сигнал игнорируется. В этом случае контроль диапазонов данных и результата возлагается на программиста.
Пример. Даны числа A[10])=342 и B[10]= -430. Длина разрядной сетки 16. Представить числа в дополнительном коде и выполнить операции сложения A+B и вычитания A-B. Получить десятичные эквиваленты результатов операций.
A[10]= 342, следовательно A[16]= 156 и A[8]= 526
B[10]= -430, следовательно B[16]= -1AE и B[8]= -656
v Шестнадцатеричное кодирование
Определим дополнительные коды чисел и заранее подготовим дополнение для кода вычитаемого:
(А[16])доп=0156 (B[16])доп=FFFF ((B[16])доп)доп=FFFF
-01AЕ - FE52
FE51 01AD
+ 1 + 1
FE52 01AЕ
v Восьмеричное кодирование
(А[8])доп=000526 (B[8])доп=177777 ((B[8])доп)доп= 177777
-000656 - 177122
177121 000655
+ 1 + 1
177122 000656
Пример. В ЭВМ выполнена операция сложения A+B=R. Числа представлены в дополнительном коде. Длина разрядной сетки 16. Код первого слагаемого (А[16])доп=006D, а код результата (R[16])доп=005E. Определить код второго слагаемого и десятичные эквиваленты слагаемых и результата.
(R)доп=(А)доп+(В)доп, отсюда (B)доп=(R)доп-(A)доп или
(B)доп=(R)доп+((A)доп))доп.
((A[16])доп)доп=FFFF
-006D
FF92
+ 1
FF93
Коды первого слагаемого и результата соответствуют положительным числам.
A[10] = 6×161 + 13×160 = 109
R[10] = 5×161 + 14×160 = 94
Дата добавления: 2019-02-08; просмотров: 737;