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:
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
- Defina os bits binários do Multiplicando e do Multiplicador como M e Q, respectivamente.
- Inicialmente, definimos AC e Qn + 1registra o valor como 0.
- 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.
- Um Qn representa o último bit do Q, e o Qn+1mostra o bit incrementado de Qn em 1.
- Em cada ciclo do algoritmo de cabine, Qne Qn + 1os bits serão verificados nos seguintes parâmetros da seguinte forma:
- 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.
- 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.
- 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.
- A operação funciona continuamente até atingirmos n - 1 bit no algoritmo de boot.
- 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.
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 | AC | P | Pn + 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)