logo

Boothův násobící algoritmus

Algoritmus kabiny je násobící algoritmus, který nám umožňuje vynásobit dvě binární celá čísla se znaménkem v doplňku 2, resp. Používá se také ke zrychlení výkonu procesu násobení. Je také velmi efektivní. Funguje na řetězcových bitech 0 v násobiči, který nevyžaduje žádný další bit, pouze posouvá bity řetězce nejvíce vpravo a řetězec 1 v bitové váze násobiče 2kna váhu 2mkteré lze považovat za 2k+ 1- 2m .

Následuje obrázkové znázornění Boothova algoritmu:

Booth

Ve výše uvedeném vývojovém diagramu zpočátku AC a Qn + 1 bity jsou nastaveny na 0 a SC je sekvenční čítač, který představuje celkovou sadu bitů n, který se rovná počtu bitů v násobiči. Existují BR které představují multiplikandové bity, a QR představuje multiplikační bity . Poté jsme narazili na dva bity násobiče jako Qna Qn + 1, kde Qn představuje poslední bit QR a Qn + 1představuje inkrementovaný bit Qn o 1. Předpokládejme, že dva bity násobiče jsou rovny 10; to znamená, že musíme odečíst násobitel od dílčího součinu v akumulátoru AC a poté provést aritmetický posun (ashr). Pokud se dva z multiplikátorů rovnají 01, znamená to, že musíme provést přidání násobiče k dílčímu součinu v akumulátoru AC a poté provést operaci aritmetického posunu ( Ashr ), počítaje v to Qn + 1 . Operace aritmetického posunu se používá v Boothově algoritmu k posunutí bitů AC a QR doprava o jedničku a znaménkový bit v AC zůstává nezměněn. A sekvenční čítač se nepřetržitě snižuje, dokud se výpočetní smyčka neopakuje, rovnající se počtu bitů (n).

Práce na algoritmu Booth

  1. Nastavte binární bity násobiče a násobiče na M a Q.
  2. Nejprve nastavíme AC a Qn + 1registruje hodnotu na 0.
  3. SC představuje počet bitů multiplikátoru (Q) a je to sekvenční čítač, který se průběžně snižuje, dokud se nerovná počtu bitů (n) nebo je dosažen na 0.
  4. Qn představuje poslední bit Q a Qn+1ukazuje inkrementovaný bit Qn o 1.
  5. V každém cyklu budkového algoritmu, Qna Qn + 1bity budou kontrolovány na následujících parametrech takto:
    1. Když dva bity Qna Qn + 1jsou 00 nebo 11, jednoduše provedeme aritmetický posun doprava (ashr) na dílčí součin AC. A bity Qn a Qn + 1se zvýší o 1 bit.
    2. Pokud bity Qna Qn + 1je zobrazen na 01, multiplikandové bity (M) budou přidány do AC (Accumulator registru). Poté provedeme operaci posunutí doprava na AC a QR bity o 1.
    3. Pokud bity Qna Qn + 1je zobrazen na 10, multiplikandové bity (M) budou odečteny od AC (registr akumulátoru). Poté provedeme operaci posunutí doprava na AC a QR bity o 1.
  6. Operace nepřetržitě funguje, dokud nedosáhneme n - 1 bitu v algoritmu kabiny.
  7. Výsledky násobení binárních bitů budou uloženy v registrech AC a QR.

V Boothově algoritmu se používají dvě metody:

herec saira banu

1. RSC (Right Shift Circular)

Posune bit nejvíce vpravo binárního čísla a pak se přidá na začátek binárních bitů.

Booth

2. RSA (pravá aritmetika)

Přidá dva binární bity a poté posune výsledek doprava o 1 bitovou pozici.

npm cache vymazat

Příklad : 0100 + 0110 => 1010, po sečtení binárního čísla posuňte každý bit o 1 doprava a první bit výslednice umístěte na začátek nového bitu.

Příklad: Vynásobte dvě čísla 7 a 3 pomocí Boothova násobícího algoritmu.

let . Zde máme dvě čísla, 7 a 3. Nejprve musíme převést 7 a 3 na binární čísla jako 7 = (0111) a 3 = (0011). Nyní nastavte 7 (v binárním kódu 0111) jako multiplikand (M) a 3 (v binárním kódu 0011) jako multiplikátor (Q). A SC (Sequence Count) představuje počet bitů, a zde máme 4 bity, takže nastavte SC = 4. Také ukazuje počet iteračních cyklů algoritmů kabiny a pak cykly proběhnou SC = SC - 1 krát.

Qn Qn + 1 M = (0111)
M' + 1 = (1001) & operace
AC Q Qn + 1 SC
1 0 Počáteční 0000 0011 0 4
Odčítat (M' + 1) 1001
1001
Provádějte aritmetické operace pravého posunu (ashr) 1100 1001 1 3
1 1 Provádějte aritmetické operace pravého posunu (ashr) 1110 0100 1 2
0 1 Sčítání (A + M) 0111
0101 0100
Proveďte aritmetické řazení vpravo 0010 1010 0 1
0 0 Proveďte aritmetické řazení vpravo 0001 0101 0 0

Numerický příklad Boothova násobícího algoritmu je 7 x 3 = 21 a binární reprezentace 21 je 10101. Zde dostaneme výslednici v binární 00010101. Nyní ji převedeme na desítkovou soustavu, jako (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.

příklad binárního vyhledávacího stromu

Příklad: Vynásobte dvě čísla 23 a -9 pomocí Boothova násobícího algoritmu.

Zde M = 23 = (010111) a Q = -9 = (110111)

QnQn + 1 M = 0 1 0 1 1 1
M' + 1 = 1 0 1 0 0 1
ACQQn + 1SC
Zpočátku 000 000 110111 0 6
10 Odečíst M 101001
101001
Proveďte aritmetické operace řazení vpravo 110100 111011 patnáct
jedenáct Proveďte aritmetické operace řazení vpravo 111010 011101 14
jedenáct Proveďte aritmetické řazení vpravo 111101 001110 1 3
0 1 Sčítání (A + M) 010111
010100
Proveďte aritmetické operace řazení vpravo 001010 000111 0 2
10 Odečíst M 101001
110011
Proveďte aritmetické operace řazení vpravo 111001 100011 jedenáct
jedenáct Proveďte aritmetické řazení vpravo 111100 110001 1 0

Qn + 1 = 1, znamená to, že výstup je záporný.

Proto 23 * -9 = 2 doplněk 111100110001 => (00001100111)