Os computadores não se multiplicam da mesma maneira que os humanos. Eles usam uma combinação de técnicas com base em sua natureza binária (base-2), dependendo principalmente da adição e da mudança de bits. Aqui está um colapso:
1. Representação binária: A fundação é que tudo em um computador é representado como uma série de 0s e 1s (bits). Os números são representados em binário. Por exemplo, o número decimal 13 é representado como 1101 em binário.
2. Mudança de bit: A mudança de bits para a esquerda é equivalente a multiplicar por poderes de 2. Por exemplo:
* 1101 (13 decimal) mudou a esquerda Um lugar se torna 11010 (26 decimal - 13 * 2)
* 1101 mudou a esquerda, dois lugares se tornam 110100 (52 decimal - 13 * 4)
Esta é uma operação muito rápida para o computador.
3. Adição: A multiplicação é essencialmente repetida adição. Os computadores usam um processo chamado
multiplicação binária que é análogo à longa multiplicação que aprendemos na escola, mas adaptamos para o binário.
Vamos ilustrar com um exemplo:multiplique 13 (1101) por 5 (101):
`` `
1101 (13)
x 101 (5)
-------
1101 (13 * 1) <- Esta linha é 1101 deslocada 0 lugares (13 * 2^0)
0000 (13 * 0) <- Esta linha é 1101 deslocada 1 local (13 * 2^1, mas multiplicada por 0)
11010 (13 * 4) <- Esta linha é 1101 deslocada 2 lugares (13 * 2^2)
-------
1000001 (65 decimal)
`` `
O resultado é obtido adicionando os resultados intermediários deslocados. Isso é feito com eficiência usando os Adders na unidade lógica aritmética (ALU) da CPU.
4. Implementação de hardware: A multiplicação real é realizada por circuitos especializados dentro da ALU da CPU. Esses circuitos, projetados usando portões de lógica, realizam com eficiência as operações de mudança e adição eficientemente descritas acima. Existem variações no circuito exato (por exemplo, usando o algoritmo de Booth para multiplicação mais rápida de números negativos), mas os princípios principais permanecem os mesmos.
5. Implementação de software: As linguagens de programação de alto nível (como Python, Java, C ++) abstraem os detalhes da multiplicação binária. Quando você escreve `x * y`, o compilador ou intérprete traduz isso em uma série de instruções que a CPU pode executar usando os métodos de hardware subjacentes descritos acima.
Em resumo, embora possa nos parecer simples, a multiplicação de computadores é um processo sofisticado, construído com adição binária eficiente e mudança de bits implementados em hardware especializado. A simplicidade do operador `*` na programação oculta uma sequência complexa de operações de baixo nível.