Booth algoritmas yra daugybos algoritmas, leidžiantis padauginti du pasirašytus dvejetainius sveikuosius skaičius 2 komplemente. Jis taip pat naudojamas pagreitinti dauginimo procesą. Tai taip pat labai efektyvu. Jis veikia su daugiklio eilutės bitais 0, kuriems nereikia papildomų bitų, tik perkelia labiausiai dešinėje esančius eilutės bitus ir 1 eilutę daugiklio bitų svoryje 2kiki svorio 2mkurį galima laikyti 2k+1– 2m .
Toliau pateikiamas vaizdinis Booth algoritmo vaizdas:
Aukščiau pateiktoje schemoje iš pradžių AC ir Kn + 1 bitai yra nustatyti į 0, o SC yra sekos skaitiklis, rodantis bendrą bitų skaičių n, kuris lygus bitų skaičiui daugiklyje. Yra BR kurie atstovauja daugybos bitai, o QR reiškia daugiklio bitai . Po to mes susidūrėme su dviem daugiklio bitais kaip Qnir Qn + 1, kur Qn reiškia paskutinį QR bitą, o Qn + 1reiškia Qn padidintą bitą 1. Tarkime, kad du daugiklio bitai yra lygūs 10; tai reiškia, kad turime atimti daugiklį iš dalinės sandaugos akumuliatoriuje AC ir tada atlikti aritmetinę poslinkio operaciją (ashr). Jei du daugikliai lygūs 01, tai reiškia, kad turime atlikti daugiklio pridėjimą prie dalinės sandaugos akumuliatoriuje AC ir tada atlikti aritmetinę poslinkio operaciją ( Ašras ), įskaitant Kn + 1 . Aritmetinio poslinkio operacija naudojama Bootho algoritme, kad kintamosios srovės ir QR bitai būtų perkeliami į dešinę, o kintamos srovės ženklo bitas išlieka nepakitęs. Ir sekos skaitiklis nuolat mažinamas, kol kartojasi skaičiavimo ciklas, lygus bitų skaičiui (n).
Darbas su Booth algoritmu
- Dvejetainius bitus Multiplicand ir Multiplier nustatykite kaip M ir Q.
- Iš pradžių mes nustatėme AC ir Qn + 1registruoja reikšmę į 0.
- SC reiškia daugiklio bitų skaičių (Q), ir tai yra sekos skaitiklis, kuris nuolat mažinamas, kol bus lygus bitų skaičiui (n) arba pasiekiamas iki 0.
- Qn reiškia paskutinį Q bitą ir Qn+1rodo Qn padidintą bitą 1.
- Kiekviename kabinos algoritmo cikle Qnir Qn + 1bitai bus tikrinami pagal šiuos parametrus:
- Kai du bitai Qnir Qn + 1yra 00 arba 11, paprasčiausiai atliekame aritmetinę perkėlimo į dešinę operaciją (ashr) į dalinį sandaugą AC. Ir Qn ir Q bitain + 1padidinamas 1 bitu.
- Jei Q bitainir Qn + 1rodomas iki 01, daugybos bitai (M) bus įtraukti į AC (akumuliatoriaus registrą). Po to mes atliekame teisingą perjungimo operaciją į AC ir QR bitus 1.
- Jei Q bitainir Qn + 1rodomas iki 10, daugybos bitai (M) bus atimti iš AC (akumuliatoriaus registro). Po to atliekame teisingą perjungimo operaciją į AC ir QR bitus 1.
- Operacija veikia nuolat, kol pasiekiame n - 1 bitą kabinos algoritme.
- Daugybos dvejetainių bitų rezultatai bus saugomi AC ir QR registruose.
Booth algoritme naudojami du metodai:
pirmasis nešiojamas kompiuteris
1. RSC (dešiniojo poslinkio apskritimas)
Jis perkelia labiausiai į dešinę esantį dvejetainio skaičiaus bitą, tada jis pridedamas prie dvejetainių bitų pradžios.
2. RSA (dešiniojo poslinkio aritmetika)
Jis prideda du dvejetainius bitus ir perkelia rezultatą į dešinę 1 bito padėtimi.
išvalyti talpyklą npm
Pavyzdys : 0100 + 0110 => 1010, pridėję dvejetainį skaičių, kiekvieną bitą perkelkite 1 į dešinę ir pirmąjį rezultato bitą įdėkite į naujo bito pradžią.
Pavyzdys: padauginkite du skaičius 7 ir 3 naudodami Booth daugybos algoritmą.
Metai . Čia mes turime du skaičius, 7 ir 3. Pirmiausia turime paversti 7 ir 3 dvejetainiais skaičiais, tokiais kaip 7 = (0111) ir 3 = (0011). Dabar nustatykite 7 (dvejetainėje 0111) kaip daugiklį (M) ir 3 (dvejetainėje 0011) kaip daugiklį (Q). Ir SC (Sequence Count) reiškia bitų skaičių, o čia mes turime 4 bitus, todėl nustatykite SC = 4. Taip pat jis rodo kabinos algoritmų iteracijos ciklų skaičių ir tada ciklai paleidžiami SC = SC - 1 kartą.
Kn | Kn + 1 | M = (0111) M' + 1 = (1001) & Operacija | AC | K | Kn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | Pradinis | 0000 | 0011 | 0 | 4 |
Atimti (M' + 1) | 1001 | |||||
1001 | ||||||
Atlikite aritmetines dešiniojo poslinkio operacijas (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Atlikite aritmetines dešiniojo poslinkio operacijas (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Papildymas (A + M) | 0111 | |||
0101 | 0100 | |||||
Atlikite aritmetinio poslinkio į dešinę operaciją | 0010 | 1010 m | 0 | 1 | ||
0 | 0 | Atlikite aritmetinio poslinkio į dešinę operaciją | 0001 | 0101 | 0 | 0 |
Skaitinis Booth daugybos algoritmo pavyzdys yra 7 x 3 = 21, o dvejetainis 21 atvaizdavimas yra 10101. Čia gauname dvejetainį rezultatą 00010101. Dabar konvertuojame jį į dešimtainį skaičių, kaip (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
dvejetainis medis vs bst
Pavyzdys: naudodami Booth daugybos algoritmą, padauginkite du skaičius 23 ir -9.
Čia M = 23 = (010111) ir Q = -9 = (110111)
KnKn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | K | Kn + 1SC |
---|---|---|---|---|
Iš pradžių | 000 000 | 110111 | 0 6 | |
1 0 | Atimti M | 101001 | ||
101001 | ||||
Atlikite aritmetinio poslinkio į dešinę operaciją | 110100 | 111011 | penkiolika | |
vienuolika | Atlikite aritmetinio poslinkio į dešinę operaciją | 111010 | 011101 | 1 4 |
vienuolika | Atlikite aritmetinio poslinkio į dešinę operaciją | 111101 | 001110 | 1 3 |
0 1 | Papildymas (A + M) | 010111 | ||
010100 | ||||
Atlikite aritmetinio poslinkio į dešinę operaciją | 001010 | 000111 | 0 2 | |
1 0 | Atimti M | 101001 | ||
110011 | ||||
Atlikite aritmetinio poslinkio į dešinę operaciją | 111001 | 100011 | vienuolika | |
vienuolika | Atlikite aritmetinio poslinkio į dešinę operaciją | 111100 | 110 001 | 1 0 |
Kn + 1 = 1, tai reiškia, kad išvestis yra neigiama.
Taigi, 23 * -9 = 2 papildinys 111100110001 => (00001100111)