logo

Algoritmo de multiplicação de Booth

O algoritmo booth é um algoritmo de multiplicação que nos permite multiplicar os dois inteiros binários com sinal em complemento de 2, respectivamente. Também é usado para acelerar o desempenho do processo de multiplicação. É muito eficiente também. Ele funciona nos bits da string 0 no multiplicador que não requer nenhum bit adicional, apenas desloca os bits da string mais à direita e uma string de 1 em um peso de bit multiplicador 2kpesar 2euque pode ser considerado como 2k+ 1- 2eu .

A seguir está a representação pictórica do Algoritmo de Booth:

Cabine

No fluxograma acima, inicialmente, AC e Pn + 1 bits são definidos como 0 e o SC é um contador de sequência que representa o total de bits definidos não, que é igual ao número de bits no multiplicador. Há BR que representam o bits multiplicando, e QR representa o bits multiplicadores . Depois disso, encontramos dois bits do multiplicador como Qne Qn + 1, onde Qn representa o último bit de QR, e Qn + 1representa o bit incrementado de Qn em 1. Suponha que dois bits do multiplicador sejam iguais a 10; isso significa que temos que subtrair o multiplicador do produto parcial no acumulador AC e então realizar a operação de deslocamento aritmético (ashr). Se os dois multiplicadores forem iguais a 01, significa que precisamos realizar a adição do multiplicando ao produto parcial no acumulador AC e então realizar a operação de deslocamento aritmético ( Ashr ), Incluindo Pn + 1 . A operação de deslocamento aritmético é usada no algoritmo de Booth para deslocar os bits AC e QR para a direita em um e permanece o bit de sinal em AC inalterado. E o contador de sequência é continuamente decrementado até que o loop computacional seja repetido, igual ao número de bits (n).

Trabalhando no Algoritmo de Booth

  1. Defina os bits binários do Multiplicando e do Multiplicador como M e Q, respectivamente.
  2. Inicialmente, definimos AC e Qn + 1registra o valor como 0.
  3. SC representa o número de bits multiplicadores (Q), e é um contador de sequência que é continuamente decrementado até ser igual ao número de bits (n) ou chegar a 0.
  4. Um Qn representa o último bit do Q, e o Qn+1mostra o bit incrementado de Qn em 1.
  5. Em cada ciclo do algoritmo de cabine, Qne Qn + 1os bits serão verificados nos seguintes parâmetros da seguinte forma:
    1. Quando dois bits Qne Qn + 1são 00 ou 11, simplesmente realizamos a operação aritmética de deslocamento para a direita (ashr) para o produto parcial AC. E os bits de Qn e Qn + 1é incrementado em 1 bit.
    2. Se os bits de Qne Qn + 1for mostrado como 01, os bits multiplicandos (M) serão adicionados ao AC (registro acumulador). Depois disso, realizamos a operação de deslocamento para a direita dos bits AC e QR por 1.
    3. Se os bits de Qne Qn + 1for mostrado como 10, os bits multiplicandos (M) serão subtraídos do AC (registro acumulador). Depois disso, realizamos a operação de deslocamento para a direita dos bits AC e QR por 1.
  6. A operação funciona continuamente até atingirmos n - 1 bit no algoritmo de boot.
  7. Os resultados dos bits binários da multiplicação serão armazenados nos registradores AC e QR.

Existem dois métodos usados ​​no Algoritmo de Booth:

foreach java

1. RSC (Circular de Deslocamento para a Direita)

Ele desloca o bit mais à direita do número binário e depois é adicionado ao início dos bits binários.

Cabine

2. RSA (Aritmética do Deslocamento para a Direita)

Ele adiciona os dois bits binários e depois desloca o resultado para a direita na posição de 1 bit.

bloquear anúncios do youtube android

Exemplo : 0100 + 0110 => 1010, após adicionar o número binário, desloque cada bit em 1 para a direita e coloque o primeiro bit da resultante no início do novo bit.

Exemplo: Multiplique os dois números 7 e 3 usando o algoritmo de multiplicação de Booth.

Anos . Aqui temos dois números, 7 e 3. Primeiro de tudo, precisamos converter 7 e 3 em números binários como 7 = (0111) e 3 = (0011). Agora defina 7 (em binário 0111) como multiplicando (M) e 3 (em binário 0011) como multiplicador (Q). E SC (Sequence Count) representa o número de bits, e aqui temos 4 bits, então defina SC = 4. Além disso, mostra o número de ciclos de iteração dos algoritmos do estande e depois os ciclos executados SC = SC - 1 vez.

Pn Pn + 1 M = (0111)
M' + 1 = (1001) & Operação
AC P Pn + 1 SC
1 0 Inicial 0000 0011 0 4
Subtrair (M' + 1) 1001
1001
Execute operações aritméticas de deslocamento à direita (ashr) 1100 1001 1 3
1 1 Execute operações aritméticas de deslocamento à direita (ashr) 1110 0100 1 2
0 1 Adição (A + M) 0111
0101 0100
Execute a operação aritmética de deslocamento à direita 0010 1010 0 1
0 0 Execute a operação aritmética de deslocamento à direita 0001 0101 0 0

O exemplo numérico do Algoritmo de Multiplicação de Booth é 7 x 3 = 21 e a representação binária de 21 é 10101. Aqui, obtemos a resultante em binário 00010101. Agora convertemos para decimal, como (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.

como executar o script no linux

Exemplo: multiplique os dois números 23 e -9 usando o algoritmo de multiplicação de Booth.

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

PnPn + 1 M = 0 1 0 1 1 1
M' + 1 = 1 0 1 0 0 1
ACPPn + 1SC
Inicialmente 000000 110111 0 6
1 0 Subtrair M 101001
101001
Execute a operação aritmética de deslocamento à direita 110100 111011 quinze
onze Execute a operação aritmética de deslocamento à direita 111010 011101 1 4
onze Execute a operação aritmética de deslocamento à direita 111101 001110 1 3
0 1 Adição (A + M) 010111
010100
Execute a operação aritmética de deslocamento à direita 001010 000111 0 2
1 0 Subtrair M 101001
110011
Execute a operação aritmética de deslocamento à direita 111001 100011 onze
onze Execute a operação aritmética de deslocamento à direita 111100 110001 1 0

Pn + 1 = 1, significa que a saída é negativa.

Portanto, 23 * -9 = complemento de 2 de 111100110001 => (00001100111)