Booth-algoritmen är en multiplikationsalgoritm som låter oss multiplicera de två signerade binära heltal i 2-komplement. Det används också för att påskynda prestanda för multiplikationsprocessen. Det är väldigt effektivt också. Det fungerar på strängbitarnas nollor i multiplikatorn som inte kräver någon extra bit, bara skift strängbitarna längst till höger och en sträng med 1:or i en multiplikatorbitsvikt 2ktill vikt 2msom kan betraktas som 2k+ 1- 2m .
Följande är den bildliga representationen av Booth's Algoritm:
I flödesschemat ovan, initialt, AC och Fn + 1 bitar sätts till 0, och SC är en sekvensräknare som representerar den totala uppsättningen av bitar n, vilket är lika med antalet bitar i multiplikatorn. Det finns BR som representerar multiplikant bitar, och QR representerar multiplikatorbitar . Efter det mötte vi två bitar av multiplikatorn som Qnoch Qn + 1, där Qn representerar den sista biten av QR, och Qn + 1representerar den inkrementerade biten av Qn med 1. Antag att två bitar av multiplikatorn är lika med 10; det betyder att vi måste subtrahera multiplikatorn från delprodukten i ackumulatorn AC och sedan utföra den aritmetiska skiftoperationen (ashr). Om de två av multiplikatorerna är lika med 01, betyder det att vi måste utföra additionen av multiplikanden till delprodukten i ackumulator AC och sedan utföra den aritmetiska skiftoperationen ( Ashr ), Inklusive Fn + 1 . Den aritmetiska skiftoperationen används i Booths algoritm för att flytta AC- och QR-bitar åt höger med en och förblir teckenbiten i AC oförändrad. Och sekvensräknaren dekrementeras kontinuerligt tills beräkningsslingan upprepas, lika med antalet bitar (n).
Arbetar med Booth Algorithm
- Ställ in de binära bitarna Multiplicand och Multiplier som M respektive Q.
- Till en början ställde vi in AC och Qn + 1registrerar värdet till 0.
- SC representerar antalet multiplikatorbitar (Q), och det är en sekvensräknare som kontinuerligt dekrementeras tills lika med antalet bitar (n) eller nås till 0.
- En Qn representerar den sista biten av Q:et och Q:etn+1visar den inkrementerade biten av Qn med 1.
- På varje cykel av båsalgoritmen, Qnoch Qn + 1bitar kommer att kontrolleras på följande parametrar enligt följande:
- När två bitar Qnoch Qn + 1är 00 eller 11, utför vi helt enkelt den aritmetiska växlingsoperationen åt höger (ashr) till delprodukten AC. Och bitarna av Qn och Qn + 1ökas med 1 bit.
- Om bitarna av Qnoch Qn + 1visas till 01, kommer multiplikantbitarna (M) att läggas till AC (ackumulatorregistret). Efter det utför vi rätt skiftoperation till AC- och QR-bitarna med 1.
- Om bitarna av Qnoch Qn + 1är visar till 10, kommer multiplikantbitarna (M) att subtraheras från AC (ackumulatorregistret). Efter det utför vi rätt skiftoperation till AC- och QR-bitarna med 1.
- Operationen fungerar kontinuerligt tills vi nådde n - 1 bit i båsalgoritmen.
- Resultaten av de binära multiplikationsbitarna kommer att lagras i AC- och QR-registren.
Det finns två metoder som används i Booth's Algorithm:
bias och varians
1. RSC (Right Shift Circular)
Den skiftar biten längst till höger av det binära talet och läggs sedan till i början av de binära bitarna.
2. RSA (Right Shift Arithmetic)
Den lägger till de två binära bitarna och flyttar sedan resultatet åt höger med 1-bitars position.
npm cache rensa
Exempel : 0100 + 0110 => 1010, efter att ha lagt till det binära talet skiftar varje bit med 1 åt höger och sätter den första biten av resultanten i början av den nya biten.
Exempel: Multiplicera de två talen 7 och 3 genom att använda Booths multiplikationsalgoritm.
år . Här har vi två tal, 7 och 3. Först och främst måste vi konvertera 7 och 3 till binära tal som 7 = (0111) och 3 = (0011). Ange nu 7 (i binär 0111) som multiplikant (M) och 3 (i binär 0011) som en multiplikator (Q). Och SC (Sequence Count) representerar antalet bitar, och här har vi 4 bitar, så ställ in SC = 4. Det visar också antalet iterationscykler för båsets algoritmer och sedan körs cykler SC = SC - 1 gång.
Fn | Fn + 1 | M = (0111) M' + 1 = (1001) & Operation | AC | F | Fn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | Första | 0000 | 0011 | 0 | 4 |
Subtrahera (M' + 1) | 1001 | |||||
1001 | ||||||
Utför aritmetiska högerväxlingsoperationer (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Utför aritmetiska högerväxlingsoperationer (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Tillägg (A + M) | 0111 | |||
0101 | 0100 | |||||
Utför aritmetisk högerväxling | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Utför aritmetisk högerväxling | 0001 | 0101 | 0 | 0 |
Det numeriska exemplet på Booths multiplikationsalgoritm är 7 x 3 = 21 och den binära representationen av 21 är 10101. Här får vi resultanten i binär 00010101. Nu konverterar vi den till decimal, som (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
frön vs sporer
Exempel: Multiplicera de två talen 23 och -9 genom att använda Booths multiplikationsalgoritm.
Här är M = 23 = (010111) och Q = -9 = (110111)
FnFn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | F | Fn + 1SC |
---|---|---|---|---|
Initialt | 000 000 | 110111 | 0 6 | |
1 0 | Subtrahera M | 101001 | ||
101001 | ||||
Utför aritmetisk högerväxling | 110100 | 111011 | femton | |
elva | Utför aritmetisk högerväxling | 111010 | 011101 | 1 4 |
elva | Utför aritmetisk högerväxling | 111101 | 001110 | 1 3 |
0 1 | Tillägg (A + M) | 010111 | ||
010100 | ||||
Utför aritmetisk högerväxling | 001010 | 000111 | 0 2 | |
1 0 | Subtrahera M | 101001 | ||
110011 | ||||
Utför aritmetisk högerväxling | 111001 | 100011 | elva | |
elva | Utför aritmetisk högerväxling | 111100 | 110001 | 1 0 |
Fn + 1 = 1, det betyder att utgången är negativ.
Därför är 23 * -9 = 2:s komplement av 111100110001 => (00001100111)