Page 24 - ЭВМ
P. 24

3.  При  дополнительном  кодировании  диапазон  отрицательных
                                                                                               n
               чисел  расширен  на  одно  число:  отрицательное  число (–2 )  имеет
               код 10…0.
                      Сложение чисел, представленных в дополнительном коде. Пусть

                z  = х + y. Рассмотрим 4 случая:

                      1. Первый случай – x ≥ 0 и y ≥ 0. Для положительных чисел до-
               полнительное кодирование совпадает с прямым кодированием:


                                                 z = +   = |x| + |y|.
                                                     х
                                                          y


                      При  этом  работает  обычное  правило  сложения.  Переполнение
                                                                                                        n
               разрядной сетки отсутствует, если значащая часть результата |z| < 2 .
               Переполнение разрядной сетки присутствует, если значащая часть ре-
                                  n
               зультата |z| ≥ 2 . Значения знаковых разрядов x и y равны 0.
                      Поэтому правило определения наличия или отсутствия перепол-
               нения разрядной сетки имеет следующую формулировку: переполне-
               ние разрядной сетки отсутствует, если нет переносов в знаковый раз-
               ряд и из знакового разряда; переполнение разрядной сетки присутст-

               вует, если есть перенос в знаковый разряд, а из знакового разряда нет
               переноса.
                      Например: для n = 4

                       x = 7                00101
                       y = 5                00111
                                            01100

                      2. Второй случай – x ≥ |0 и y < 0. По определению дополнительного
                                                                                             n
               кодирования для значащей части кода имеем: z = +  = |x| + 2 – |y| =
                                                                                  y
                                                                             х

                                     n
                      а) |x| ≥ |y|, 2 + (|x| + |y|);
                                     n
                      б) |x| > |y|, 2 – (|y| – |x|).
                      Для  случая «а»  результат  операции  сложения  положительный,
               поэтому дополнительный код значащей части соответствует прямому
                                    n
               коду, перенос 2  в знаковый разряд результата и значения знаковых
               разрядов x и y обеспечивают нулевое значение знакового разряда ре-
               зультата.
                      Для  случая «б»  результат  операции  сложения  отрицательный,
               поэтому  значащая  часть  представлена  в  коде,  соответствующем  до-
                                                        n
               полнительному коду, перенос 2  в знаковый разряд результата отсут-
               ствует, и значения знаковых разрядов x и y обеспечивают единичное
               значение знакового разряда результата.
                      Например:



                                                           24
   19   20   21   22   23   24   25   26   27   28   29