El algoritmo de la multiplicación de la cabina del es un algoritmo de la multiplicación que multiplica dos números binarios firmados en la notación del complemento dos.
una rejilla de tres filas, cada uno con las columnas para el x + y + pedacitos 1. Etiquetar las líneas respectivamente A (agregar), S (restar), y P (producto).
La notación del complemento dos, completar los primeros pedacitos del x de cada línea de: A: el multiplicando
S: la negativa del multiplicando (en formato de 2 complementos)
P: ceros
Llenar los pedacitos siguientes del y de cada línea de: A: ceros
S: ceros
P: el multiplicador
Llenar el pedacito pasado de cada línea de un cero.
hace ambos tiempos del y de los pasos:
# si son los dos pedacitos pasados en el producto…
#* 00 o 11: no hacer nada.
#* 01: P = P + el A. no hacen caso de cualquier desbordamiento.
#* 10: P = P + el S. no hacen caso de cualquier desbordamiento.
# cambio aritmético la posición de la derecha una del producto.
Gota del
que el primer (contamos de la derecha hacia la izquierda al ocuparse de los pedacitos) mordió del producto para el resultado final.
A = 0011 0000 0
S = 1101 0000 0
P = 0000 1100 0
realiza el lazo cuatro veces:
# P = 0000 110 0 0 . Los dos pedacitos pasados son 00.
#* P = 0000 0110 0.
# P = 0000 011 0 0 . Los dos pedacitos pasados son 00.
#* P = 0000 0011 0.
# P = 0000 001 1 0 . Los dos pedacitos pasados son 10.
#* P = 1101 0011 0.
#* P = 1110 1001 1.
# P = 1110 100 1 1 . Los dos pedacitos pasados son 11.
#* P = 1111 0100 1.
el producto es 1111 0100, que es -12.
La técnica antedicha es inadecuada cuando el multiplicando es el número negativo más grande que puede ser representado (es decir si el multiplicando tiene 8 pedacitos entonces este valor es -128). Una corrección posible a este problema es agregar un más pedacito a la izquierda de A, de S y del P. Debajo, demostramos la técnica mejorada multiplicando -8 por 2 usar 4 pedacitos para el multiplicando y el multiplicador:
A = 1 1000 0000 0
S = 0 1000 0000 0
P = 0 0000 0010 0
realiza el lazo cuatro veces:
# P = 0 0000 001 0 0 . Los dos pedacitos pasados son 00.
#* P = 0 0000 0001 0.
# P = 0 0000 000 1 0 . Los dos pedacitos pasados son 10.
#* P = 0 1000 0001 0.
#* P = 0 0100 0000 1.
# P = 0 0100 000 0 1 . Los dos pedacitos pasados son 01.
#* P = 1 1100 0000 1.
#* P = 1 1110 0000 0.
# P = 1 1110 000 0 0 . Los dos pedacitos pasados son 00.
#* P = 1 1111 0000 0.
el producto es 11110000 (después de desechar el primer y pasado pedacito) que es -16.
De hecho, puede ser demostrado que cualquier secuencia de 1 en un número binario se puede romper en la diferencia de dos números binarios:
_ del .
Por lo tanto, podemos substituir realmente la multiplicación por la cadena de unas en el número original operaciones más simples, agregando el multiplicador, cambiando de puesto el producto parcial formado así por los lugares apropiados, y después finalmente restando el multiplicador. Está haciendo uso del hecho de que no tenemos que hacer todo menos cambiar de puesto mientras que estamos tratando de 0s en un multiplicador binario, y somos similares a usar la característica matemática esa mientras que se multiplican por 99.
Este esquema se puede ampliar a cualquier número de bloques de 1s en un multiplicador (caso incluyendo de solo 1 en un bloque). Así,
El algoritmo de la cabina sigue este esquema realizando una adición cuando encuentra el primer dígito de un bloque de unos (0 1) y una substracción cuando encuentra el extremo del bloque (1 0). Esto trabaja para un multiplicador negativo también. Cuando los que está en un multiplicador se agrupan en bloques largos, el algoritmo de la cabina realiza pocas adiciones y substracciones que el algoritmo normal de la multiplicación.
.
| Random links: | Búsqueda del progreso | Berimbau | La propensión marginal a consume | Desafiador del Mk VIII del crucero | Russ Berrie |