Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Alfredosavi/Booths-Algorithm

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Booths-Algorithm

O algoritmo de booth é um algoritmo de multiplicação que permite multiplicar dois inteiros binários com sinal em complemento de 2.

🔥 Como usar?

OBS: O algoritmo está disponível para o uso no Git pages.

  1. Insira nos campos de inputs os valores e em seguida informe se são valores decimais ou binários, em seguida clique no botão Send;
  2. Clique no botão Steps para ver passo a passo o flowchart do Algoritmo e a tabela;
  3. Use o botão Reset para limpar o flowchart e a tabela.

⚠️ Algoritmo

  1. Converter os valores M (multiplicando) e Q (multiplicador) para binário;
    1. Se o número informado for menor que 0, usa-se o método complemento de dois;
  2. Criar um contador com a quantidade de bits do número Q;
  3. Setar os valores de A e Q-1 para 0;
  4. Realizar o comparativo entre o último bit de Q com o de Q-1;
    1. Se Q=1 e Q-1=0, realiza a subtração de A por M e assume este novo valor para A (A <- A -M);
    2. Se Q=0 e Q-1=1, realiza a soma de A por M e assume este novo valor para A (A <- A + M);
    3. Se Q=Q-1, não é necessário nenhum passo algébrico, é feito somente o deslocamento;
  5. Após cada comparativo, realizasse o deslocamento aritmético para a direita e em seguida decrementa o contador.

🔨 Exemplo

Multiplicação de (5)10 X (7)10:

  1. Converter para binário:
    1. (5)10 = (0101)2;
    2. (7)10 = (0111)2;
  2. Criar um contador com a quantidade de bits do multiplicando:
    1. Count = 4;
  3. Setar os valores de A e de Q-1 para 0:
    1. A = 0000;
    2. Q-1 = 0;
  4. Comparar o último bit de Q com Q-1:
    1. Se Q=1 e Q-1=0 --> A <- A - M;
    2. Se Q=0 e Q-1=1 --> A <- A + M;
    3. Se Q=Q-1 --> Nada (nenhum passo algébrico);
  5. Realizar o deslocamento aritmético para a direita e em seguida decrementar o contador.

Repetir o passo 4° e 5° até o contador ser igual a zero.

Tabela com o passo a passo do exemplo a cima:

Operação A Q Q-1 Razão
0000 0111 0 Valores Iniciais
A <- A - M 1011 0111 0 1/4 Ciclo
Deslocamento 1101 1011 1
Nada 1110 1011 1 2/4 Ciclo
Deslocamento 1110 1101 1
Nada 1111 1101 1 3/4 Ciclo
Deslocamento 1111 0110 1
A <- A + M 0100 0110 1 4/4 Ciclo
Deslocamento 0010 0011 0

Resultado: A = 0010 Q = 0011 => (00100011)2 = (35)10

⚡️ Como contribuir

  • Faça um fork desse repositório;
  • Cria uma branch com a sua feature: git checkout -b minha-feature;
  • Faça commit das suas alterações: git commit -m 'feat: Minha nova feature';
  • Faça push para a sua branch: git push origin minha-feature.

Depois que o merge da sua pull request for feito, você pode deletar a sua branch.

📝 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

O algoritmo de booth é um algoritmo de multiplicação que permite multiplicar dois inteiros binários com sinal em complemento de 2.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.