Booth-algoritmen er en multiplikationsalgoritme, der giver os mulighed for at multiplicere de to fortegnede binære heltal i henholdsvis 2's komplement. Det bruges også til at fremskynde udførelsen af multiplikationsprocessen. Det er også meget effektivt. Det virker på strengbits 0'erne i multiplikatoren, der ikke kræver yderligere bit, forskyd kun strengbittene længst til højre og en streng på 1'er i en multiplikatorbitvægt 2ktil vægt 2mder kan betragtes som 2k+1- 2m .
Følgende er den billedlige repræsentation af Booth's Algorithm:
I ovenstående flowchart, indledningsvis, AC og Qn + 1 bit er sat til 0, og SC er en sekvenstæller, der repræsenterer det samlede antal bitsæt n, som er lig med antallet af bits i multiplikatoren. Der er BR der repræsenterer multiplikante bits, og QR repræsenterer multiplikator bits . Derefter stødte vi på to bits af multiplikatoren som Qnog Qn + 1, hvor Qn repræsenterer den sidste bit af QR, og Qn + 1repræsenterer den øgede bit af Qn med 1. Antag, at to bits af multiplikatoren er lig med 10; det betyder, at vi skal trække multiplikatoren fra partialproduktet i akkumulatoren AC og derefter udføre den aritmetiske skiftoperation (ashr). Hvis de to af multiplikatorerne er lig med 01, betyder det, at vi skal udføre additionen af multiplikaanden til delproduktet i akkumulator AC og derefter udføre den aritmetiske skiftoperation ( Ashr ), herunder Qn + 1 . Den aritmetiske skiftoperation bruges i Booths algoritme til at flytte AC- og QR-bits til højre med én og forbliver fortegnsbitten i AC uændret. Og sekvenstælleren dekrementeres kontinuerligt, indtil beregningsløkken gentages, svarende til antallet af bit (n).
Arbejder på Booth Algorithm
- Indstil Multiplikand og Multiplikator binære bits som henholdsvis M og Q.
- Til at begynde med indstillede vi AC og Qn + 1registrerer værdi til 0.
- SC repræsenterer antallet af multiplikatorbit (Q), og det er en sekvenstæller, der kontinuerligt dekrementeres, indtil det er lig med antallet af bit (n) eller nås til 0.
- En Qn repræsenterer den sidste bit af Q, og Qn+1viser den øgede bit af Qn med 1.
- I hver cyklus af kabinealgoritmen, Qnog Qn + 1bits vil blive kontrolleret på følgende parametre som følger:
- Når to bit Qnog Qn + 1er 00 eller 11, udfører vi blot den aritmetiske skift til højre (ashr) til delproduktet AC. Og biterne af Qn og Qn + 1øges med 1 bit.
- Hvis bits af Qnog Qn + 1er viser til 01, vil multiplikand-bittene (M) blive tilføjet til AC (akkumulatorregisteret). Derefter udfører vi den rigtige skiftoperation til AC- og QR-bittene med 1.
- Hvis bits af Qnog Qn + 1er viser til 10, vil multiplikandbittene (M) blive trukket fra AC (akkumulatorregisteret). Derefter udfører vi den rigtige skiftoperation til AC- og QR-bittene med 1.
- Operationen fungerer kontinuerligt, indtil vi nåede n - 1 bit i booth-algoritmen.
- Resultaterne af de binære multiplikationsbits vil blive gemt i AC- og QR-registrene.
Der er to metoder, der bruges i Booths algoritme:
markdown billeder
1. RSC (Right Shift Circular)
Det forskyder bit længst til højre i det binære tal, og derefter tilføjes det til begyndelsen af de binære bit.
2. RSA (Right Shift Arithmetic)
Den tilføjer de to binære bit og flytter derefter resultatet til højre med 1-bit position.
java program loop
Eksempel : 0100 + 0110 => 1010, efter at have tilføjet det binære tal forskyd hver bit med 1 til højre og sæt den første bit af resultant til begyndelsen af den nye bit.
Eksempel: Gang de to tal 7 og 3 ved at bruge Booths multiplikationsalgoritme.
Flere år . Her har vi to tal, 7 og 3. Først og fremmest skal vi konvertere 7 og 3 til binære tal som 7 = (0111) og 3 = (0011). Indstil nu 7 (i binær 0111) som multiplikant (M) og 3 (i binær 0011) som en multiplikator (Q). Og SC (Sequence Count) repræsenterer antallet af bits, og her har vi 4 bit, så sæt SC = 4. Den viser også antallet af iterationscyklusser af standens algoritmer og derefter kører cykler SC = SC - 1 gang.
Qn | Qn + 1 | M = (0111) M' + 1 = (1001) & Operation | AC | Q | Qn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | Initial | 0000 | 0011 | 0 | 4 |
Trække fra (M' + 1) | 1001 | |||||
1001 | ||||||
Udfør aritmetiske højreskiftoperationer (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Udfør aritmetiske højreskiftoperationer (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Tilføjelse (A + M) | 0111 | |||
0101 | 0100 | |||||
Udfør aritmetisk højreskifteoperation | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Udfør aritmetisk højreskifteoperation | 0001 | 0101 | 0 | 0 |
Det numeriske eksempel på Booths multiplikationsalgoritme er 7 x 3 = 21, og den binære repræsentation af 21 er 10101. Her får vi resultanten i binær 00010101. Nu konverterer vi den til decimal, som (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
jordnødde vs jordnødde
Eksempel: Gang de to tal 23 og -9 ved at bruge Booths multiplikationsalgoritme.
Her er M = 23 = (010111) og Q = -9 = (110111)
QnQn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | Q | Qn + 1SC |
---|---|---|---|---|
I første omgang | 000000 | 110111 | 0 6 | |
1 0 | Træk M fra | 101001 | ||
101001 | ||||
Udfør aritmetisk højreskiftoperation | 110100 | 111011 | femten | |
elleve | Udfør aritmetisk højreskiftoperation | 111010 | 011101 | 1 4 |
elleve | Udfør aritmetisk højreskiftoperation | 111101 | 001110 | 1 3 |
0 1 | Tilføjelse (A + M) | 010111 | ||
010100 | ||||
Udfør aritmetisk højreskiftoperation | 001010 | 000111 | 0 2 | |
1 0 | Træk M fra | 101001 | ||
110011 | ||||
Udfør aritmetisk højreskifteoperation | 111001 | 100011 | elleve | |
elleve | Udfør aritmetisk højreskiftoperation | 111100 | 110001 | 1 0 |
Qn + 1 = 1, betyder det, at outputtet er negativt.
Derfor er 23 * -9 = 2'er komplement af 111100110001 => (00001100111)