logo

Booths multiplikationsalgoritm

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:

Bås

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

  1. Ställ in de binära bitarna Multiplicand och Multiplier som M respektive Q.
  2. Till en början ställde vi in ​​AC och Qn + 1registrerar värdet till 0.
  3. 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.
  4. En Qn representerar den sista biten av Q:et och Q:etn+1visar den inkrementerade biten av Qn med 1.
  5. På varje cykel av båsalgoritmen, Qnoch Qn + 1bitar kommer att kontrolleras på följande parametrar enligt följande:
    1. 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.
    2. 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.
    3. 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.
  6. Operationen fungerar kontinuerligt tills vi nådde n - 1 bit i båsalgoritmen.
  7. 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.

Bås

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