Boothi algoritm

Boothi algoritm on märgiga binaararvude korrutamise meetod. Selle leiutas Andrew Donald Booth 1950. aastal, tehes Londonis Birkbecki kolledžis kristallograafiauuringuid. Arvutite arengu tulemusena kasvas üha enam vajadus leida meetod, millega saaks korrutada kahte arvu, mille märk ei ole alati positiivne. Selliste arvutuste käsitsi arvutamiseks oli juba varem mitmeid viise, kuid vaid üksikud sobisid 20. sajandi keskpaiga arvutite riistvaraga kasutamiseks. Varasemaid märkidega binaararvude korrutamise meetodeid, mida sai selle perioodi arvutitel kasutada, oli väga keeruline rakendada ning selleks läks enamasti vaja täiendavat spetsiaalset riistvara. Otsiti uut, lihtsamat ja vähem arvutusjõudlust vajavat meetodit. Boothi algoritm on bittide korrutamise algoritm, mis korrutab kaks märgiga binaararvu kahe täiendi meetodiga. See võimaldab mõlemal kordajal olla ükskõik kas pluss või miinus märgiga ja neid omavahel korrutada ilma eelneva teadmiseta kumma märgiga see arv päriselt on. Boothi algoritm on kiirem kui tavaline binaararvude korrutamine, sest see töötab efektiivselt negatiivsete arvudega. See saavutatakse kuna väärtusele eelnevate bittidega (milleks on negatiivse arvu puhul ühed) ei pea arvutusi tegema. Selle asemel, et korrutatavat binaararvu iga bitiga täielikult korrutada, kasutatakse Boothi algoritmis positsioonipõhist korrutamist, vähendades sellega arvutuste arvu ja aega. Üks korrutistest teisendatakse, võrreldes kõrvuti olevate bitte. Teisenduse tulemus korrutatakse teise kordajaga. Peale igat tehet tehakse bitinihe paremale. korrutised liidetakse Kõik arvu kirjeldavatest bittidest vasakule poole jäävad tühjad kohad asendatakse kõige tähtsama bitiga (most significant bit). (kõige tähtsam bitt on kõige vasakpoolsem bitt) Vastavalt sellele tabelile asendatakse teine tegur korrutises üleminekute lugemisega Kui null muutub üheks, on tulemus +1 Kui üks muutub nulliks, on tulemus –1 Kui muutub samaks bitiks ehk 0 → 0 või 1 → 1 siis on tulemus 0 (see on põhiline põhjus miks seda viisi arvutamine on kiirem) Soovime korrutada arvud –11 ja +13 +13 on bittides 0 1 1 0 1 Teisendame 0 1 1 0 1 eespool toodud tabeli järgi 0 → 1 = +1 1 → 1 = 0 1 → 0 = –1 0 → 1 = +1 1 → 0 = –1 (kui bitijada saab läbi siis võetakse puuduva biti asemel on 0) saame +1 0 –1 1 –1 Nüüd saab korrutada teisendatud kujul arvu 13 arvuga –11 Edasi rakendatakse tavalist binaararvude korrutamist ‏‏‎ ‎‏‏‎ ‎1 0 ‏‏‎1 ‏‏‎‎ 0 1 (–11) +1 0 –1 +1 –1 (+13) Vasakpoolseimat bitti (most significant bit) paljundatakse. Kui tulemused kokku liita, siis saame vastuseks: 1 1 0 1 1 1 0 0 0 1 (–143) Teisendame b Arvu b esimene, teine ja kolmas bitt on ühed ning viimane bitt on null. Saame seda esitada järgmisel kujul: b = 2 ( 3 + 1 ) − 2 ( 1 ) {\displaystyle b=2^{(3+1)}-2^{(1)}} Korrutame a ja teisendatud b a ∗ b = a ∗ ( 2 4 − 2 1 ) = a ∗ 2 4 − a ∗ 2 1 {\displaystyle a*b=a*(2^{4}-2^{1})=a*2^{4}-a*2^{1}} a korrutatud b esimese osaga a ∗ 2 4 = 01011 ∗ 2 4 = 010110000 {\displaystyle a*2^{4}=01011*2^{4}=010110000} põhimõtteliselt kahe aste, ehk 2 ( 4 ) {\displaystyle 2^{(4)}} näitab, mitu nulli lisada a korrutatud b teise osaga ( − a ) ∗ 2 1 = 10101 ∗ 2 1 = 101010 {\displaystyle (-a)*2^{1}=10101*2^{1}=101010} Liidame saadud korrutised kokku Kuna –a on negatiivne, siis laiendatakse (vasakut poolt) bitiga 1 (mitte 0 nagu positiivse arvu puhul) a ∗ b {\displaystyle a*b} = 0 1011 0000 + 1 1111 0101 = 10 1001 1010 –a puhul kasutati kahe täiendit, mille tõttu võime kõige vasakpoolsemat ühte võib ignoreerida (arv on negatiivne). Booth, Andrew D. (1. august 1950). "Wayback Machine" (PDF). web.archive.org. Lk 1. Originaali arhiivikoopia seisuga 16. juuli 2018. Vaadatud 29. aprillil 2024.{{netiviide}}: CS1 hooldus: robot: algse URL-i olek teadmata (link) Lange, Marty (2012). COMPUTER ORGANIZATION AND EMBEDDED SYSTEMS (PDF) (inglise) (kuues trükk). 1221 Avenue of the Americas, New York, NY 10020: McGraw-Hill. Lk 348-351. ISBN 9780073380650. {{raamatuviide}}: autori nimeparameetrid dubleerivad üksteist (juhend)CS1 hooldus: koht sisaldab numbrit (link) Neso Academy. "The Concept of Booth's Algorithm". Vaadatud 1. mai 2024. Boothi algoritmi tutvustus – video Youtube'is Boothi algoritmi kasutusvõimalusi – video Youtube'is Binaararvude korrutamine – video Youtube'is