Метод Бута

Умножения в дополнительных кодах без применения коррекции.

Примечание.

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

Правильный результат получается только при положительных операндах.

С = [Aпр.]×[Bпр.]

При А<0, B>0 получаем псевдо-произведение:

С* = [Aдоп.]·[Bпр.] = [2n - |A|]·[Bпр.] = 2n ·Bпр. - |A| ·Bпр.

Должно быть: C = 22n - |A| · Bпр.

При A>0, B<0: Апр.· [2n - |В|] = 2n · Апр - Апр·|В|

Должно быть: C = 22n - Апр·|В|

При A>0, B<0: (2n - |A|)·(2n - |В|) = 22n - 2n·|В| - 2n·|А| + |A| · |В|

Должно быть: C = |A| · |В|

Два вида коррекции

1. Коррекция окончательного результата состоит в вычитании множимого из старших разрядов СЧП, которое может быть заменено на сложение с дополнением множимого. Эта коррекция проводится при отрицательном множителе.

2. При отрицательном множимом коррекция проводится во время умножения и сводится к модифицированному сдвигу СЧП (при сдвиге СЧП вправо в свободный разряд заносится единица).

В случае отрицательного множимого (A<0,B>0) при умножении на младшие нули проводится обычный (не модифицированный) сдвиг – в свободный разряд заносится 0.

Пример. А = 15, В = 13, n = 5.

[Aпр.] = 1.1111 [Bпр.] = 0.1101

[Aдоп.] = 1.0001

а) А<0, B>0:

№ шага Операнды и действия СЧП (старшие разряды) СЧП (младшие разряды) Пояснения
  СЧП                     Обнуление старших разрядов СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  СЧП→                     Сдвиг СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  СЧП                      

Сдоп. = (1.100111101)2

Спр. = (1.011000011)2 = -195

b) А>0, B<0:

[Aпр.] = 0.1111 [Bпр.] = 1.1101

[Bдоп.] = 1.0011

№ шага Операнды и действия СЧП (старшие разряды) СЧП (младшие разряды) Пояснения
  СЧП                     Обнуление старших разрядов СЧП.
  [A]пр.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  [A]пр.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  СЧП→                     Сдвиг СЧП.
  СЧП→                     Сдвиг СЧП.
  [A]пр.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
Корр [-A]доп.                      
СЧП                      

Спр. = (1.011000011)2 = -195

b) А<0, B<0:

[Aпр.] = 1.1111 [Bпр.] = 1.1101

[Bдоп.] = 1.0011

№ шага Операнды и действия СЧП (старшие разряды) СЧП (младшие разряды) Пояснения
  СЧП                     Обнуление старших разрядов СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
  СЧП→                     Сдвиг СЧП.
  СЧП→                     Сдвиг СЧП.
  [A]доп.                     Сложение СЧП с множимым.
СЧП                    
СЧП→                     Сдвиг СЧП.
Корр [-A]пр.                      
СЧП                      

Спр. = (1.011000011)2 = -195

Особенности метода.

Сложение или вычитание множимого на каждом шаге зависит от того, как после сдвига вправо меняется младший разряд множителя. Если он поменялся с 0 на 1, то происходит вычитание множимого из СЧП. При изменении младшего разряда множителя с 1 на 0 происходит сложение множимого с СЧП.

Если младший разряд множителя не изменился, то производится только сдвиг. При реализации этого метода происходит чередование сложения и вычитания, поэтому старший разряд СЧП в явном виде представляет его знак. При сдвиге знак СЧП сохраняется.

Эффективность метода Бута по сравнению с обычным методом поразрядного умножения проявляется для тех множителей, в которых имеются длинные последовательности единиц.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: