Algoritmul de cabină este un algoritm de multiplicare care ne permite să înmulțim cele două numere întregi binare cu semn în complementul 2, respectiv. De asemenea, este folosit pentru a accelera performanța procesului de înmulțire. Este si foarte eficient. Funcționează pe șirurile de biți 0 din multiplicator care nu necesită nici un bit suplimentar, doar deplasarea biților din dreapta și un șir de 1 într-o greutate de biți de multiplicare 2kla greutatea 2mcare poate fi considerat ca 2k+ 1- 2m .
Mai jos este reprezentarea picturală a algoritmului Booth:
În schema de mai sus, inițial, AC și Qn + 1 biții sunt setați la 0 și SC este un numărător de secvențe care reprezintă totalul de biți setați n, care este egal cu numărul de biți din multiplicator. Sunt BR care reprezintă biți multiplicand, iar QR reprezintă biți multiplicatori . După aceea, am întâlnit doi biți ai multiplicatorului ca Qnși Qn + 1, unde Qn reprezintă ultimul bit al QR și Qn + 1reprezintă bitul incrementat al lui Qn cu 1. Să presupunem că doi biți ai multiplicatorului sunt egali cu 10; înseamnă că trebuie să scădem multiplicatorul din produsul parțial din acumulatorul AC și apoi să efectuăm operația de schimbare aritmetică (ashr). Dacă cei doi multiplicatori sunt egali cu 01, înseamnă că trebuie să efectuăm adăugarea multiplicandului la produsul parțial din acumulatorul AC și apoi să efectuăm operația de schimbare aritmetică ( Ashr ), inclusiv Qn + 1 . Operația de schimbare aritmetică este utilizată în algoritmul lui Booth pentru a deplasa biții AC și QR la dreapta cu unul și rămâne neschimbat bitul de semn în AC. Și contorul de secvență este decrementat continuu până când bucla de calcul se repetă, egală cu numărul de biți (n).
Lucrul la algoritmul Booth
- Setați biții binari Multiplicand și Multiplicator ca M și, respectiv, Q.
- Inițial, am setat AC și Qn + 1înregistrează valoarea la 0.
- SC reprezintă numărul de biți de multiplicare (Q) și este un numărător de secvențe care este decrementat continuu până la egal cu numărul de biți (n) sau atins la 0.
- Un Qn reprezintă ultimul bit al Q, iar Qn+1arată bitul incrementat al lui Qn cu 1.
- Pe fiecare ciclu al algoritmului de cabină, Qnși Qn + 1biții vor fi verificați pe următorii parametri, după cum urmează:
- Când doi biți Qnși Qn + 1sunt 00 sau 11, pur și simplu efectuăm operația de deplasare aritmetică la dreapta (ashr) la produsul parțial AC. Și biții Qn și Qn + 1este incrementat cu 1 bit.
- Dacă biții din Qnși Qn + 1este afișat la 01, biții de multiplicare (M) vor fi adăugați la AC (registrul acumulatorului). După aceea, efectuăm operația de schimbare corectă la biții AC și QR cu 1.
- Dacă biții din Qnși Qn + 1se arată la 10, biții de multiplicare (M) vor fi scăzuți din AC (registrul acumulatorului). După aceea, efectuăm operația de schimbare corectă la biții AC și QR cu 1.
- Operația funcționează continuu până când ajungem la n - 1 bit în algoritmul de cabină.
- Rezultatele biților binari de multiplicare vor fi stocați în registrele AC și QR.
Există două metode utilizate în algoritmul lui Booth:
filigran în cuvânt
1. RSC (Circulară de schimbare la dreapta)
Deplasează bitul din dreapta al numărului binar și apoi este adăugat la începutul biților binari.
2. RSA (Right Shift Arithmetic)
Acesta adaugă cei doi biți binari și apoi deplasează rezultatul la dreapta cu poziția de 1 bit.
blocați reclamele youtube Android
Exemplu : 0100 + 0110 => 1010, după adăugarea numărului binar, deplasați fiecare bit cu 1 la dreapta și puneți primul bit de rezultantă la începutul noului bit.
Exemplu: Înmulțiți cele două numere 7 și 3 utilizând algoritmul de înmulțire al lui Booth.
Ani . Aici avem două numere, 7 și 3. În primul rând, trebuie să convertim 7 și 3 în numere binare precum 7 = (0111) și 3 = (0011). Acum setați 7 (în binar 0111) ca multiplicand (M) și 3 (în binar 0011) ca multiplicator (Q). Și SC (Sequence Count) reprezintă numărul de biți, iar aici avem 4 biți, deci setați SC = 4. De asemenea, arată numărul de cicluri de iterație ale algoritmilor cabinei și apoi ciclurile rulate SC = SC - 1 dată.
Qn | Qn + 1 | M = (0111) M' + 1 = (1001) & Operație | AC | Q | Qn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | Iniţială | 0000 | 0011 | 0 | 4 |
Scădea (M' + 1) | 1001 | |||||
1001 | ||||||
Efectuați operații aritmetice de deplasare la dreapta (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Efectuați operații aritmetice de deplasare la dreapta (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Adăugare (A + M) | 0111 | |||
0101 | 0100 | |||||
Efectuați operația aritmetică de schimbare la dreapta | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Efectuați operația aritmetică de schimbare la dreapta | 0001 | 0101 | 0 | 0 |
Exemplul numeric al algoritmului de înmulțire al lui Booth este 7 x 3 = 21 și reprezentarea binară a lui 21 este 10101. Aici, obținem rezultatul în binar 00010101. Acum o convertim în zecimal, ca (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
10 din 50.00
Exemplu: Înmulțiți cele două numere 23 și -9 utilizând algoritmul de înmulțire al lui Booth.
Aici, M = 23 = (010111) și Q = -9 = (110111)
QnQn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | Q | Qn + 1SC |
---|---|---|---|---|
Inițial | 000000 | 110111 | 0 6 | |
1 0 | Scădeți M | 101001 | ||
101001 | ||||
Efectuați operația aritmetică de schimbare la dreapta | 110100 | 111011 | cincisprezece | |
unsprezece | Efectuați operația aritmetică de schimbare la dreapta | 111010 | 011101 | 1 4 |
unsprezece | Efectuați operația aritmetică de schimbare la dreapta | 111101 | 001110 | 1 3 |
0 1 | Adăugare (A + M) | 010111 | ||
010100 | ||||
Efectuați operația aritmetică de schimbare la dreapta | 001010 | 000111 | 0 2 | |
1 0 | Scădeți M | 101001 | ||
110011 | ||||
Efectuați operația aritmetică de schimbare la dreapta | 111001 | 100011 | unsprezece | |
unsprezece | Efectuați operația aritmetică de schimbare la dreapta | 111100 | 110001 | 1 0 |
Qn + 1 = 1, înseamnă că ieșirea este negativă.
Prin urmare, 23 * -9 = complementul 2 al lui 111100110001 => (00001100111)