logo

Algoritmo di moltiplicazione di Booth

L'algoritmo di Booth è un algoritmo di moltiplicazione che permette di moltiplicare rispettivamente due interi binari con segno in complemento a 2. Viene utilizzato anche per accelerare l'esecuzione del processo di moltiplicazione. È anche molto efficiente. Funziona sui bit di stringa 0 nel moltiplicatore che non richiede bit aggiuntivi, sposta solo i bit di stringa più a destra e una stringa di 1 in un bit di peso moltiplicatore 2Kpesare 2Mche può essere considerato come 2k+1- 2M .

Di seguito è riportata la rappresentazione pittorica dell'algoritmo di Booth:

Stand

Nel diagramma di flusso sopra, inizialmente, AC E Qn+1 i bit sono impostati su 0 e il SC è un contatore di sequenza che rappresenta il totale dei bit impostati N, che è uguale al numero di bit nel moltiplicatore. Ci sono BR che rappresentano il bit moltiplicando, e QR rappresenta il bit moltiplicatori . Successivamente, abbiamo riscontrato due bit del moltiplicatore come QNe Qn+1, dove Qn rappresenta l'ultimo bit di QR, e Qn+1rappresenta il bit incrementato di Qn di 1. Supponiamo che due bit del moltiplicatore siano pari a 10; significa che dobbiamo sottrarre il moltiplicatore dal prodotto parziale nell'accumulatore AC e quindi eseguire l'operazione di spostamento aritmetico (ashr). Se i due moltiplicatori sono uguali a 01, significa che dobbiamo eseguire l'addizione del moltiplicando al prodotto parziale nell'accumulatore AC e quindi eseguire l'operazione di spostamento aritmetico ( Ashr ), Compreso Qn+1 . L'operazione di spostamento aritmetico viene utilizzata nell'algoritmo di Booth per spostare i bit AC e QR verso destra di uno e mantiene invariato il bit di segno in AC. E il contatore di sequenza viene continuamente decrementato finché il ciclo di calcolo non viene ripetuto, pari al numero di bit (n).

Lavorando sull'algoritmo Booth

  1. Impostare i bit binari del Moltiplicando e del Moltiplicatore rispettivamente come M e Q.
  2. Inizialmente impostiamo AC e Qn+1registra il valore su 0.
  3. SC rappresenta il numero di bit del moltiplicatore (Q), ed è un contatore di sequenza che viene continuamente decrementato fino a raggiungere il numero di bit (n) o raggiungere 0.
  4. Una Qn rappresenta l'ultimo bit della Q e della Qn+1mostra il bit di Qn incrementato di 1.
  5. Ad ogni ciclo dell'algoritmo della cabina, QNe Qn+1i bit verranno controllati sui seguenti parametri come segue:
    1. Quando due bit QNe Qn+1sono 00 o 11, eseguiamo semplicemente l'operazione di spostamento aritmetico a destra (ashr) fino al prodotto parziale AC. E i pezzi di Qn e Qn+1viene incrementato di 1 bit.
    2. Se i pezzi di QNe Qn+1viene visualizzato su 01, i bit del moltiplicando (M) verranno aggiunti all'AC (registro dell'accumulatore). Successivamente, eseguiamo l'operazione di spostamento a destra sui bit AC e QR di 1.
    3. Se i pezzi di QNe Qn+1Se viene riportato a 10, i bit del moltiplicando (M) verranno sottratti dall'AC (registro dell'accumulatore). Successivamente, eseguiamo l'operazione di spostamento a destra sui bit AC e QR di 1.
  6. L'operazione funziona continuamente finché non raggiungiamo n - 1 bit nell'algoritmo della cabina.
  7. I risultati dei bit binari della moltiplicazione verranno memorizzati nei registri AC e QR.

Esistono due metodi utilizzati nell'algoritmo di Booth:

sistema operativo Linux

1. RSC (circolare spostamento a destra)

Sposta il bit più a destra del numero binario e quindi viene aggiunto all'inizio dei bit binari.

Stand

2. RSA (aritmetica dello spostamento a destra)

Aggiunge i due bit binari e quindi sposta il risultato a destra della posizione di 1 bit.

barrato il ribasso

Esempio : 0100 + 0110 => 1010, dopo aver aggiunto il numero binario sposta ogni bit di 1 a destra e metti il ​​primo bit della risultante all'inizio del nuovo bit.

Esempio: moltiplica i due numeri 7 e 3 utilizzando l'algoritmo di moltiplicazione di Booth.

Anni . Qui abbiamo due numeri, 7 e 3. Prima di tutto dobbiamo convertire 7 e 3 in numeri binari come 7 = (0111) e 3 = (0011). Ora imposta 7 (in binario 0111) come moltiplicando (M) e 3 (in binario 0011) come moltiplicatore (Q). E SC (Sequence Count) rappresenta il numero di bit, e qui abbiamo 4 bit, quindi imposta SC = 4. Inoltre, mostra il numero di cicli di iterazione degli algoritmi di Booth e quindi i cicli vengono eseguiti SC = SC - 1 volta.

QN Qn+1 M = (0111)
M' + 1 = (1001) & Operazione
AC Q Qn+1 SC
1 0 Iniziale 0000 0011 0 4
Sottrarre (M' + 1) 1001
1001
Eseguire operazioni aritmetiche di spostamento a destra (ashr) 1100 1001 1 3
1 1 Eseguire operazioni aritmetiche di spostamento a destra (ashr) 1110 0100 1 2
0 1 Addizione (A + M) 0111
0101 0100
Eseguire l'operazione di spostamento aritmetico a destra 0010 1010 0 1
0 0 Eseguire l'operazione di spostamento aritmetico a destra 0001 0101 0 0

L'esempio numerico dell'algoritmo di moltiplicazione di Booth è 7 x 3 = 21 e la rappresentazione binaria di 21 è 10101. Qui otteniamo il risultante in binario 00010101. Ora lo convertiamo in decimale, come (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.

tipi di riferimento Java

Esempio: moltiplica i due numeri 23 e -9 utilizzando l'algoritmo di moltiplicazione di Booth.

Qui, M = 23 = (010111) e Q = -9 = (110111)

QNQn+1 M = 0 1 0 1 1 1
M' + 1 = 1 0 1 0 0 1
ACQQn+1SC
Inizialmente 000000 110111 06
10 Sottrai M 101001
101001
Eseguire l'operazione di spostamento aritmetico a destra 110100 111011 quindici
undici Eseguire l'operazione di spostamento aritmetico a destra 111010 011101 1 4
undici Eseguire l'operazione di spostamento aritmetico a destra 111101 001110 1 3
01 Addizione (A + M) 010111
010100
Eseguire l'operazione di spostamento aritmetico a destra 001010 000111 02
10 Sottrai M 101001
110011
Eseguire l'operazione di spostamento aritmetico a destra 111001 100011 undici
undici Eseguire l'operazione di spostamento aritmetico a destra 111100 110001 1 0

Qn+1 = 1, significa che l'uscita è negativa.

Quindi, 23 * -9 = complemento a 2 di 111100110001 => (00001100111)