¿Se puede usar un multiplicador para multiplicar números más grandes? [cerrado]

0

¿Puedes hacer la multiplicación de 8 bits fácilmente con un multiplicador de 4 bits? Eficientemente.

    
pregunta cc6g11

2 respuestas

1

Sí, puedes usar un pequeño multiplicador para realizar grandes operaciones de multiplicación. Como dice Jippie, es exactamente lo que haces cuando multiplicas números decimales de varios dígitos a mano: multiplicas cada par de dígitos en tu cabeza, escribes los resultados parciales y luego los sumas. Esta es la multiplicación de radix-10.

Puede hacer lo mismo con números binarios de 4 bits (radix-16 o hexadecimal), o incluso con números binarios de 8 bits (radix-256) o más. El principio es exactamente el mismo.

Es más fácil si ambos números están sin firmar. Si alguno de los dos es negativo, nídalo y luego averigua cuál debe ser el signo del resultado.

    
respondido por el Dave Tweed
1

No puedes hacerlo solo con el multiplicador. También necesita la capacidad de realizar una adición (ya sea en el ancho completo de su resultado en un paso o en pasos más pequeños con acarreos).

Normalmente, los multiplicadores tienen una salida que es el doble de ancha que sus entradas, por lo que pueden multiplicar todas las combinaciones de entradas sin desbordarse. Supondré que por "multiplicador de 4 bits" quiere decir un multiplicador con dos entradas de cuatro bits y una salida de 8 bits. También asumiré que todos los números están sin firmar (la aritmética firmada hace las cosas más complicadas)

Digamos que tiene dos números de 8 bits A y B. Podemos tratar cada número de 8 bits como si estuvieran formados por dos números de 4 bits que llamaremos AH, AL BH y BL.

A = AH * 2 4 + AL

B = BH * 2 4 + BL

Por lo tanto

A * B = (AH * 2 4 + AL) * (BH * 2 4 + BL)

Multiplicar eso nos da

A * B = AH * BH * 2 8 + AH * BL * 2 4 + AL * BH * 2 4 + AL * BL

Las multiplicaciones por 2 4 y 2 8 son solo desplazamientos de bits fijos. Así que podemos implementar esto con nuestro multiplicador 4x4 y un sumador adecuado (ya sea un sumador lo suficientemente ancho para hacer la adición en un solo paso o un sumador con arrastre hacia adentro y afuera).

Esto se puede extender a valores de entrada y salida más grandes. Obviamente, cuanto más grandes sean tus entradas y salidas, más multiplicaciones y adiciones tendrás que hacer. El proceso es esencialmente una multiplicación larga en hexadecimal.

    
respondido por el Peter Green

Lea otras preguntas en las etiquetas