logo

Booth szorzási algoritmusa

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ó:

Bódé

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

  1. Állítsa be a Szorzó és Szorzó bináris biteket M-re, illetve Q-ra.
  2. Kezdetben beállítottuk az AC-t és a Q-tn + 10-ra regisztrálja az értéket.
  3. 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.
  4. A Qn a Q és a Q utolsó bitjen+1Qn 1-gyel megnövelt bitjét mutatja.
  5. 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:
    1. 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.
    2. 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.
    3. 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.
  6. A művelet folyamatosan működik, amíg el nem érjük az n - 1 bitet a fülke algoritmusban.
  7. 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.

Bódé

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
ACKKn + 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)