Операции сложения и вычитания в дополнительном коде
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

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

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

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

                                                                   11011

                                                                  +  1

                                                                   11100

Наличие единицы в знаковом разряде результата свидетельствует о том, что результат представляет собой код отрицательного числа. Определим десятичный эквивалент результата. Для этого возьмем дополнение для результата.

                                                                            11111

                                                    (Инверсия) ®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

                                                                -0 1A Е                                    - 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

 

 

 

Двоично-десятичный код

В некоторых универсальных ЭВМ для кодирования целых чисел применяется смешанный двоично-десятичный код. Своим появлением двоично-десятичный код обязан стремлению производить запись и обработку целых чисел в привычной для человека десятичной системе счисления. Десятичные цифры в этом коде представлены четырехразрядными двоичными числами.

 Для кодировки знака используется дополнительная группа бит, расположенная за младшей десятичной цифрой. Знак положительных чисел кодируется как "1100" (С), а знак отрицательных чисел как "1101" (D). Суммарная длина кода должна быть кратна байту. Если длина полученного кода не кратна байту, то перед старшей десятичной цифрой числа добавляется незначащий десятичный ноль.

 

Пример: Записать число А10 = 951 в двоично-десятичном коде. Код представить в двоичной и шестнадцатеричной форме.

 

9 5 1 C
цифра цифра цифра знак
1001 0101 0001 1100

Пример: Записать число А10 = -87 в двоично-десятичном коде. Код представить в двоичной и шестнадцатеричной форме.

0 8 7 D
цифра цифра цифра Знак
0000 1000 0111 1101

 



Дата: 2019-02-02, просмотров: 356.