Page 38 - ЭВМ
P. 38

Основные  изменения  обычного  алгоритма  умножения  на  каж-
               дом шаге, которых n/2, состоят в следующем:
                      – в зависимости от значения очередной пары разрядов множителя
               к  частичному  произведению  умножения  необходимо  прибавить  одно

               множимое, удвоенное множимое, утроенное множимое или нуль;
                      – множитель сдвигается на два разряда вправо;
                      – частичное произведение умножения сдвигается на два разряда
               вправо;
                      – прибавление одного множимого обычно, прибавление удвоен-
               ного множимого достигается посредством передачи в сумматор мно-
               жимого со сдвигом на один разряд влево.

                      Получение утроенного множимого посредством сложения мно-
               жимого и удвоенного множимого приводит к дополнительным аппа-
               ратным и временным потерям, поэтому обычно используют следую-
               щий прием.
                      Обозначим  r  частичное  произведение.  Пусть  очередное  значе-
               ние пары разрядов множителя есть 11(3). Вместо прибавления утро-

               енного множимого к частичному произведению и его сдвига на два
               разряда вправо П(2): (r +3М)/4 = 1/4 + 3М/4, вычтем из частичного
               произведения множимое.
                      После сдвига полученного частичного произведения на два раз-
               ряда вправо П(2) имеем (r – М)/4 = 1/4 + М/4.
                      Поэтому полученное частичное произведение имеет недостаток
               на одно множимое М, что должно быть скорректировано на следую-

               щем шаге за счет увеличения на 1 значения следующей пары разрядов
               множителя:

                  Коррекция для          b i+1       b i         Действие         Коррекция для сле-
                  текущей пары                                                       дующей пары
                          0               0          0             П(2) r                    0
                          0               0          1          П(2) (r+М)                   0
                          0               1          0         П(2) (r+2М)                   0
                          0               1          1          П(2)(r–М)                    1
                          1               0          0          П(2) (r+M)                   0
                          1               0          1         П(2) (r+2М)                   0
                          1               1          0          П(2) (r–М)                   1
                          1               1          1             П(2) r                    1

                      Деление. Пусть z = x/y, где частное z ≥ 0, делимое x ≥ 0 и дели-
               тель y ≥ 0 целые, представленные в прямом коде. Операция деления
               является обратной для операции умножения.




                                                           38
   33   34   35   36   37   38   39   40   41   42   43