A fülkealgoritmus egy szorzóalgoritmus, amely lehetővé teszi, hogy a két előjeles bináris egész számot a 2-es komplementerben megszorozzuk. A szorzási folyamat teljesítményének felgyorsítására is szolgál. Nagyon hatékony is. A szorzóban a 0-s karakterlánc-biteken működik, amely nem igényel további bitet, csak a jobb szélső karakterláncbiteket és egy 1-es karakterláncot tolja el a szorzóbit súlyában 2ksúlyra 2maminek tekinthető 2k+1- 2m .
Az alábbiakban a Booth-algoritmus képi ábrázolása látható:
A fenti folyamatábrán először AC és Kn + 1 bitek 0-ra vannak állítva, és a SC egy sorozatszámláló, amely az összes bitkészletet reprezentálja n, amely megegyezik a szorzóban lévő bitek számával. Vannak BR amelyek képviselik a szorzó bitek, a QR pedig a szorzó bitek . Ezt követően a szorzó két bitjével találkoztunk Q-kéntnés Qn + 1, ahol Qn a QR utolsó bitje, a Q pedign + 1Qn 1-gyel megnövelt bitjét jelenti. Tegyük fel, hogy a szorzó két bitje egyenlő 10-zel; ez azt jelenti, hogy az AC akkumulátorban lévő részszorzatból ki kell vonnunk a szorzót, majd végre kell hajtanunk az aritmetikai eltolási műveletet (ashr). Ha a szorzók két értéke 01, az azt jelenti, hogy el kell végeznünk a szorzószám hozzáadását az AC akkumulátor részleges szorzatához, majd végre kell hajtanunk az aritmetikai eltolási műveletet ( Ashr ), beleértve Kn + 1 . Az aritmetikai eltolási műveletet Booth algoritmusa használja az AC és QR bitek eggyel jobbra tolására, és az előjelbit változatlan marad AC-ban. És a sorozatszámláló folyamatosan csökken, amíg a számítási ciklus meg nem ismétlődik, egyenlő a bitek számával (n).
Munka a Booth algoritmuson
- Állítsa be a Szorzó és Szorzó bináris biteket M-re, illetve Q-ra.
- Kezdetben beállítottuk az AC-t és a Q-tn + 10-ra regisztrálja az értéket.
- Az SC a szorzóbitek számát (Q) jelenti, és ez egy sorozatszámláló, amely folyamatosan csökken, amíg el nem éri a bitek számát (n), vagy el nem éri a 0-t.
- A Qn a Q és a Q utolsó bitjen+1Qn 1-gyel megnövelt bitjét mutatja.
- A fülke algoritmus minden ciklusában Qnés Qn + 1A bitek ellenőrzése a következő paraméterek alapján történik:
- Amikor két bit Qnés Qn + 100 vagy 11, egyszerűen végrehajtjuk az aritmetikai eltolás jobbra műveletét (ashr) az AC részszorzathoz. És a Qn és Q bitjein + 11 bittel növekszik.
- Ha a Q bitjeinés Qn + 1Ha értéke 01, akkor a szorzóbitek (M) hozzáadódnak az AC-hoz (Akkumulátorregiszter). Ezt követően 1-gyel végrehajtjuk a jobb eltolási műveletet az AC és a QR bitekre.
- Ha a Q bitjeinés Qn + 1Ha értéke 10, akkor a szorzóbitek (M) kivonásra kerülnek az AC-ból (Akkumulátorregiszter). Ezt követően 1-gyel végrehajtjuk a jobb eltolási műveletet az AC és a QR bitekre.
- A művelet folyamatosan működik, amíg el nem érjük az n - 1 bitet a fülke algoritmusban.
- A szorzási bináris bitek eredményeit az AC és a QR regiszterek tárolják.
A Booth-algoritmusban két módszert használnak:
mennyi a 25 a 100-ból
1. RSC (jobb váltókör)
Eltolja a bináris szám jobb szélső bitjét, majd hozzáadja a bináris bitek elejéhez.
2. RSA (jobb eltolásos aritmetika)
Összeadja a két bináris bitet, majd az eredményt 1 bites pozícióval jobbra tolja.
leértékelés áthúzása
Példa : 0100 + 0110 => 1010, a bináris szám hozzáadása után tolja el az egyes biteket 1-gyel jobbra, és helyezze az eredő első bitjét az új bit elejére.
Példa: Szorozzuk meg a két számot, 7-et és 3-at a Booth-féle szorzóalgoritmus segítségével.
Évek . Itt két szám van, a 7 és a 3. Először is át kell alakítanunk a 7-et és a 3-at bináris számokká, például 7 = (0111) és 3 = (0011). Most állítsa be a 7-et (bináris 0111-ben) szorzóként (M) és 3-at (binárisan 0011) szorzóként (Q). Az SC (Sequence Count) pedig a bitek számát jelenti, és itt 4 bitünk van, tehát állítsa be az SC = 4 értéket. Ezenkívül megmutatja a fülke algoritmusainak iterációs ciklusainak számát, majd a ciklusok SC = SC - 1 alkalommal futnak le.
Kn | Kn + 1 | M = (0111) M' + 1 = (1001) & Művelet | AC | K | Kn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | A kezdeti | 0000 | 0011 | 0 | 4 |
Kivonás (M' + 1) | 1001 | |||||
1001 | ||||||
Aritmetikai jobb eltolás műveletek végrehajtása (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Aritmetikai jobb eltolás műveletek végrehajtása (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Összeadás (A + M) | 0111 | |||
0101 | 0100 | |||||
Hajtsa végre az aritmetikai jobbra eltolási műveletet | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Hajtsa végre az aritmetikai jobbra eltolási műveletet | 0001 | 0101 | 0 | 0 |
A Booth-féle szorzási algoritmus numerikus példája: 7 x 3 = 21, a 21 bináris reprezentációja pedig 10101. Itt a 00010101 bináris eredményt kapjuk. Most decimálisra konvertáljuk, mint (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
java virtuális gép
Példa: Szorozzuk meg a két 23-as és -9-es számot a Booth-féle szorzóalgoritmus segítségével.
Itt M = 23 = (010111) és Q = -9 = (110111)
KnKn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | K | Kn + 1SC |
---|---|---|---|---|
Alapvetően | 000000 | 110111 | 0 6 | |
1 0 | Vonjuk ki M | 101001 | ||
101001 | ||||
Hajtsa végre az aritmetikai jobbra eltolási műveletet | 110100 | 111011 | tizenöt | |
tizenegy | Hajtsa végre az aritmetikai jobbra eltolási műveletet | 111010 | 011101 | 1 4 |
tizenegy | Hajtsa végre az aritmetikai jobbra eltolási műveletet | 111101 | 001110 | 1 3 |
0 1 | Összeadás (A + M) | 010111 | ||
010100 | ||||
Hajtsa végre az aritmetikai jobbra eltolási műveletet | 001010 | 000111 | 0 2 | |
1 0 | Vonjuk ki M | 101001 | ||
110011 | ||||
Hajtsa végre az aritmetikai jobbra eltolási műveletet | 111001 | 100011 | tizenegy | |
tizenegy | Hajtsa végre az aritmetikai jobbra eltolási műveletet | 111100 | 110001 | 1 0 |
Kn + 1 = 1, ez azt jelenti, hogy a kimenet negatív.
Ezért 23 * -9 = 2 komplementere 111100110001 => (00001100111)