logo

Алгоритъм за умножение на Бут

Алгоритъмът на кабината е алгоритъм за умножение, който ни позволява да умножим двете двоични цели числа със знак съответно в допълнение 2. Използва се и за ускоряване на изпълнението на процеса на умножение. Също така е много ефективен. Работи върху низовите битове 0 в умножителя, който не изисква допълнителен бит, само измества най-десните битове на низа и низ от 1 в битово тегло на умножителя 2кдо тегло 2мкоето може да се счита за 2k+ 1- 2м .

Следва графичното представяне на алгоритъма на Booth:

Бут

В горната блок-схема, първоначално, AC и Qn + 1 битовете са зададени на 0, а SC е брояч на последователности, който представлява общия набор от битове н, което е равно на броя на битовете в умножителя. Има БР които представляват умножени битове, и QR представлява умножителни битове . След това се натъкнахме на два бита от множителя като Qни Qn + 1, където Qn представлява последния бит от QR, и Qn + 1представлява увеличения бит на Qn с 1. Да предположим, че два бита от множителя са равни на 10; това означава, че трябва да извадим множителя от частичния продукт в акумулатора AC и след това да извършим аритметична операция за изместване (ashr). Ако двата множителя са равни на 01, това означава, че трябва да извършим добавяне на множителя към частичното произведение в акумулатора AC и след това да извършим операцията за аритметично изместване ( Ашр ), включително Qn + 1 . Операцията за аритметично изместване се използва в алгоритъма на Booth за изместване на AC и QR битовете надясно с един и остава знаковият бит в AC непроменен. И броячът на последователности непрекъснато намалява, докато изчислителният цикъл се повтори, равен на броя битове (n).

Работа по алгоритъма на щанда

  1. Задайте двоичните битове за множител и множител като M и Q, съответно.
  2. Първоначално задаваме AC и Qn + 1регистрира стойност на 0.
  3. SC представлява броя на битовете на множителя (Q) и е брояч на последователности, който непрекъснато се намалява, докато стане равен на броя на битовете (n) или достигне до 0.
  4. Qn представлява последния бит от Q и Qn+1показва увеличения бит на Qn с 1.
  5. На всеки цикъл от алгоритъма на кабината Qни Qn + 1битовете ще бъдат проверени по следните параметри, както следва:
    1. Когато два бита Qни Qn + 1са 00 или 11, ние просто изпълняваме операцията за аритметично изместване надясно (ashr) към частичното произведение AC. И битовете на Qn и Qn + 1се увеличава с 1 бит.
    2. Ако битовете на Qни Qn + 1се показва на 01, битовете на множителя (M) ще бъдат добавени към AC (Акумулаторен регистър). След това извършваме дясната операция за преместване към битовете AC и QR с 1.
    3. Ако битовете на Qни Qn + 1показва до 10, битовете на множителя (M) ще бъдат извадени от AC (Акумулаторен регистър). След това извършваме дясната операция за преместване към битовете AC и QR с 1.
  6. Операцията работи непрекъснато, докато достигнем n - 1 бит в алгоритъма на кабината.
  7. Резултатите от двоичните битове на умножението ще се съхраняват в регистрите AC и QR.

Има два метода, използвани в алгоритъма на Booth:

svm

1. RSC (Кръгла дясна смяна)

Той измества най-десния бит на двоичното число и след това се добавя към началото на двоичните битове.

Бут

2. RSA (Аритметика за дясно преместване)

Той добавя двата двоични бита и след това измества резултата надясно с 1-битова позиция.

блокиране на реклами в youtube android

Пример : 0100 + 0110 => 1010, след като добавите двоичното число, изместете всеки бит с 1 надясно и поставете първия бит от резултата в началото на новия бит.

Пример: Умножете двете числа 7 и 3, като използвате алгоритъма за умножение на Booth.

години . Тук имаме две числа, 7 и 3. Първо, трябва да преобразуваме 7 и 3 в двоични числа като 7 = (0111) и 3 = (0011). Сега задайте 7 (в двоичен 0111) като множител (M) и 3 (в двоичен 0011) като множител (Q). И SC (Брой последователности) представлява броя на битовете, а тук имаме 4 бита, така че задайте SC = 4. Освен това показва броя на итерационните цикли на алгоритмите на кабината и след това циклите се изпълняват SC = SC - 1 път.

Qн Qn + 1 M = (0111)
M' + 1 = (1001) & Операция
AC Q Qn + 1 SC
1 0 Първоначално 0000 0011 0 4
Извадете (M' + 1) 1001
1001
Извършване на аритметични операции с десен Shift (ashr) 1100 1001 1 3
1 1 Извършване на аритметични операции с десен Shift (ashr) 1110 0100 1 2
0 1 Добавяне (A + M) 0111
0101 0100
Извършете операция за аритметично изместване надясно 0010 1010 0 1
0 0 Извършете операция за аритметично изместване надясно 0001 0101 0 0

Численият пример на алгоритъма за умножение на Бут е 7 x 3 = 21 и двоичното представяне на 21 е 10101. Тук получаваме резултата в двоичен 00010101. Сега го преобразуваме в десетичен, като (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.

низ към цяло число в java

Пример: Умножете двете числа 23 и -9, като използвате алгоритъма за умножение на Booth.

Тук M = 23 = (010111) и Q = -9 = (110111)

QнQn + 1 M = 0 1 0 1 1 1
M' + 1 = 1 0 1 0 0 1
ACQQn + 1SC
Първоначално 000000 110111 0 6
10 Извадете M 101001
101001
Извършете операция за аритметично изместване надясно 110100 111011 петнадесет
единадесет Извършете операция за аритметично изместване надясно 111010 011101 1 4
единадесет Извършете операция за аритметично изместване надясно 111101 001110 1 3
0 1 Добавяне (A + M) 010111
010100
Извършете операция за аритметично изместване надясно 001010 000111 0 2
10 Извадете M 101001
110011
Извършете операция за аритметично изместване надясно 111001 100011 единадесет
единадесет Извършване на операция за аритметично изместване надясно 111100 110001 1 0

Qn + 1 = 1, това означава, че изходът е отрицателен.

Следователно, 23 * -9 = допълнение на 2 от 111100110001 => (00001100111)