Операции сложения и вычитания в дополнительном коде.


Операции сложения и вычитания производятся путем арифметического сложения кодов чисел. При вычитании перед выполнением операции для вычитаемого берется дополнение. Результат операции представлен в дополнительном коде.

(С)доп = (А)доп + (В)доп

(С)доп = (А)доп - (В)доп = (А)доп + ((В)доп)доп

Пример: вычислить С=А+В и 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; просмотров: 751;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.