Booth-algoritmi on kertoalgoritmi, jonka avulla voimme kertoa kaksi etumerkillistä binaarilukua 2:n komplementissa, vastaavasti. Sitä käytetään myös nopeuttamaan kertolaskuprosessia. Se on myös erittäin tehokas. Se toimii kertoimen merkkijonobitteillä 0, joka ei vaadi ylimääräistä bittiä, vain siirtää oikeanpuoleisimpia merkkijonobittejä ja 1:n merkkijonoa kertoimen bittipainossa 2kpainoon 2mjota voidaan pitää 2k+1- 2m .
Seuraava on kuvallinen esitys Boothin algoritmista:
Yllä olevassa vuokaaviossa aluksi AC ja Kn + 1 bitit on asetettu arvoon 0, ja SC on sekvenssilaskuri, joka edustaa asetettujen bittien kokonaismäärää n, joka on yhtä suuri kuin kertoimen bittien lukumäärä. On BR jotka edustavat kertobitit, ja QR edustaa kertoimen bitit . Sen jälkeen kohtasimme kaksi kertojan bittiä Q:nanja Qn + 1, jossa Qn edustaa QR:n viimeistä bittiä ja Qn + 1edustaa Qn:n lisättyä bittiä yhdellä. Oletetaan, että kertoimen kaksi bittiä on yhtä suuri kuin 10; se tarkoittaa, että meidän on vähennettävä kerroin akun AC osatuloksesta ja suoritettava sitten aritmeettinen siirtooperaatio (ashr). Jos kaksi kertojaa ovat yhtä suuret kuin 01, se tarkoittaa, että meidän on suoritettava kertolaskujen summa akun AC osittaistuloon ja suoritettava sitten aritmeettinen siirtotoiminto ( Ashr ), mukaan lukien Kn + 1 . Aritmeettista siirtooperaatiota käytetään Boothin algoritmissa AC- ja QR-bittien siirtämiseksi oikealle yhdellä ja pysyy AC:n etumerkkibittinä muuttumattomana. Ja sekvenssilaskuria pienennetään jatkuvasti, kunnes laskentasilmukka toistetaan, yhtä suuri kuin bittien lukumäärä (n).
Työskentely Booth-algoritmin parissa
- Aseta Multiplicand- ja Multiplier-binääribitit arvoiksi M ja Q.
- Aluksi asetimme AC:n ja Q:nn + 1rekisteröi arvon 0:ksi.
- SC edustaa kertojabittien määrää (Q), ja se on sekvenssilaskuri, jota pienennetään jatkuvasti, kunnes se on yhtä suuri kuin bittien lukumäärä (n) tai saavutetaan nollaan.
- Qn edustaa Q:n ja Q:n viimeistä bittiän+1näyttää Qn:n lisätyn bitin yhdellä.
- Jokaisessa kopin algoritmin syklissä Qnja Qn + 1bitit tarkistetaan seuraavilla parametreilla seuraavasti:
- Kun kaksi bittiä Qnja Qn + 1ovat 00 tai 11, suoritamme yksinkertaisesti aritmeettisen siirto oikealle -operaation (ashr) osittaistuloon AC. Ja Qn:n ja Q:n bititn + 1kasvaa 1 bitillä.
- Jos Q:n bititnja Qn + 1on 01, kerroinbitit (M) lisätään AC-rekisteriin (akkurekisteriin). Tämän jälkeen suoritamme oikean siirtotoiminnon AC- ja QR-biteille 1:llä.
- Jos Q:n bititnja Qn + 1Jos on 10, kertobitit (M) vähennetään AC:sta (akkurekisteristä). Tämän jälkeen suoritamme oikean siirtotoiminnon AC- ja QR-biteille 1:llä.
- Toiminto toimii jatkuvasti, kunnes saavutimme n - 1 bitin koppialgoritmissa.
- Kertomisen binääribittien tulokset tallennetaan AC- ja QR-rekistereihin.
Boothin algoritmissa käytetään kahta menetelmää:
javascript-operaattorit
1. RSC (Right Shift Circular)
Se siirtää binääriluvun oikeanpuoleisinta bittiä, ja sitten se lisätään binääribittien alkuun.
2. RSA (Right Shift Aritmetic)
Se lisää kaksi binaaribittiä ja siirtää sitten tulosta oikealle 1 bitin paikan verran.
kytkinkotelo java
Esimerkki : 0100 + 0110 => 1010, binääriluvun lisäämisen jälkeen siirrä kutakin bittiä 1:llä oikealle ja laita resultantin ensimmäinen bitti uuden bitin alkuun.
Esimerkki: Kerro kaksi lukua 7 ja 3 käyttämällä Boothin kertolaskualgoritmia.
Vuosia . Tässä on kaksi numeroa, 7 ja 3. Ensinnäkin meidän on muutettava 7 ja 3 binääriluvuiksi, kuten 7 = (0111) ja 3 = (0011). Aseta nyt 7 (binääriarvossa 0111) kertojaksi (M) ja 3 (binääriarvossa 0011) kertoimeksi (Q). Ja SC (Sequence Count) edustaa bittien määrää, ja tässä meillä on 4 bittiä, joten aseta SC = 4. Lisäksi se näyttää kopin algoritmien iteraatiojaksojen lukumäärän ja sitten syklit ajavat SC = SC - 1 kerran.
Kn | Kn + 1 | M = (0111) M'+1 = (1001) & Toiminta | AC | K | Kn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | Alkukirjain | 0000 | 0011 | 0 | 4 |
Vähentää (M' + 1) | 1001 | |||||
1001 | ||||||
Suorita aritmeettiset oikean siirtotoiminnot (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Suorita aritmeettiset oikean siirtotoiminnot (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Lisäys (A + M) | 0111 | |||
0101 | 0100 | |||||
Suorita aritmeettinen siirto oikealle | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Suorita aritmeettinen siirto oikealle | 0001 | 0101 | 0 | 0 |
Boothin kertolaskualgoritmin numeerinen esimerkki on 7 x 3 = 21 ja luvun 21 binääriesitys on 10101. Tässä saadaan resultantti binäärinä 00010101. Muunnamme sen nyt desimaaliluvuksi, kuten (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
10 / 50,00
Esimerkki: Kerro kaksi lukua 23 ja -9 käyttämällä Boothin kertolaskualgoritmia.
Tässä M = 23 = (010111) ja Q = -9 = (110111)
KnKn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | K | Kn + 1SC |
---|---|---|---|---|
Aluksi | 000000 | 110111 | 0 6 | |
1 0 | Vähennä M | 101001 | ||
101001 | ||||
Suorita aritmeettinen siirto oikealle | 110100 | 111011 | viisitoista | |
yksitoista | Suorita aritmeettinen siirto oikealle | 111010 | 011101 | 1 4 |
yksitoista | Suorita aritmeettinen siirto oikealle | 111101 | 001110 | 1 3 |
0 1 | Lisäys (A + M) | 010111 | ||
010100 | ||||
Suorita aritmeettinen siirto oikealle | 001010 | 000111 | 0 2 | |
1 0 | Vähennä M | 101001 | ||
110011 | ||||
Suorita aritmeettinen siirto oikealle | 111001 | 100011 | yksitoista | |
yksitoista | Suorita aritmeettinen siirto oikealle | 111100 | 110001 | 1 0 |
Kn + 1 = 1, se tarkoittaa, että tulos on negatiivinen.
Näin ollen 23 * -9 = 2:n komplementti luvusta 111100110001 => (00001100111)