Boothin kertolaskualgoritmi
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 2 k painoon 2 m jota voidaan pitää 2 k+1 - 2 m .
Seuraava on kuvallinen esitys Boothin algoritmista:
Yllä olevassa vuokaaviossa aluksi AC ja K n + 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:na n ja Q n + 1 , jossa Qn edustaa QR:n viimeistä bittiä ja Q n + 1 edustaa 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 K n + 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:n n + 1 rekisterö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+1 näyttää Qn:n lisätyn bitin yhdellä.
- Jokaisessa kopin algoritmin syklissä Q n ja Q n + 1 bitit tarkistetaan seuraavilla parametreilla seuraavasti:
- Kun kaksi bittiä Q n ja Q n + 1 ovat 00 tai 11, suoritamme yksinkertaisesti aritmeettisen siirto oikealle -operaation (ashr) osittaistuloon AC. Ja Qn:n ja Q:n bitit n + 1 kasvaa 1 bitillä.
- Jos Q:n bitit n ja Q n + 1 on 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 bitit n ja Q n + 1 Jos 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ää:
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.
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.
| K n | K n + 1 | M = (0111) M'+1 = (1001) & Toiminta | AC | K | K n + 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.
Esimerkki: Kerro kaksi lukua 23 ja -9 käyttämällä Boothin kertolaskualgoritmia.
Tässä M = 23 = (010111) ja Q = -9 = (110111)
| K n K n + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | K | K n + 1 SC |
|---|---|---|---|---|
| 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 |
K n + 1 = 1, se tarkoittaa, että tulos on negatiivinen.
Näin ollen 23 * -9 = 2:n komplementti luvusta 111100110001 => (00001100111)