Vous êtes sur la page 1sur 4

Universidad Autónoma de Baja California

Facultad de ingeniería Mexicali.


Ingeniero en Mecatrónica.

Circuitos digitales.

Tarea 1: algoritmo de Booth para multiplicaciones.

Maestra: Valenzuela Delgado Mónica

IV Semestre Grupo 690

Alumno: Francisco Javier García Ortiz.


Matrícula: 01152092

20/02/2018 Mexicali, B.C.


Algoritmo de Booth
El algoritmo de multiplicación de Booth es un algoritmo de multiplicación que
multiplica dos números binarios con signo en la notación de complemento a dos. El
algoritmo fue inventado por Andrew Donald Booth en 1950 mientras que hacía
investigación sobre cristalografía en la universidad de Bloomsbury, en Birkbeck,
Londres. Booth usaba calculadoras de escritorio que eran más rápidas en el
desplazamiento que sumando, y creó el algoritmo para aumentar su velocidad.
Como lo vimos en clase la manera de representar los números binarios negativos
es mediante su complemento a dos. Esto consiste en invertir el valor de cada uno
de los bits, es decir que si se tiene el número 5 binario 0000010 su complemento a
uno sería 11111010. Y posteriormente para obtener su complemento a dos
simplemente se debe de sumar un 1, así que se tiene 11111010 + 1 con lo que el
complemento a dos del número 5 en binario es 11111011.
Supongamos que queremos multiplicar dos números de 8 bits, digamos que
queremos multiplicar 5 * (-6) donde 5 es el multiplicando y -6 es el multiplicador, con
esos datos se forman 3 arreglos distintos; Construimos una matriz de tres filas
y Multiplicador+multiplicando+1columnas. Identificaremos las filas como, A la
primera, S la segunda y P la tercera.
La fila A se complementa con 8 ceros
La fila S representa al multiplicador en este caso el complemento de -6 se
complementa con 8 ceros
La fila P se complementa con el multiplicador
Para finalizar la matriz se inicia a 0 todos los valores de la última columna
Formando la matriz de la siguiente manera.
A=0000 0101 0000 0000 0
S=1111 1010 0000 0000 0
P=0000 0000 1111 1010 0
Se puede observar que los tres números formados son de 17 bits cuando los
números que se van a multiplicar son de 8 de modo que los números formados
siempre serán de N+1 bits, siendo N el número de bits de los factores.
El algoritmo consiste en comparar los últimos dos dígitos del número P y
dependiendo del caso que sea realizar una suma o no realizar ninguna acción.
Luego de evaluar cada caso se debe realizar un corrimiento a la derecha,
manteniendo el valor del bit más significativo y desechando el valor del bit menos
significativo. Los cuatro casos que se tienen se pueden ver en la siguiente tabla:
Caso Procedimiento
0 0 No se realiza ninguna acción aritmética
0 1 P=P+A
1 0 P=P+S
1 1 No se realiza ninguna acción aritmética

Continuando con la multiplicación del ejemplo


Veamos el algoritmo paso a paso usando los números A, S y P que habíamos
establecido. Primero tenemos el número P original:
0000 0000 1111 101[0 0] P

Se comparan los últimos dos dígitos [0 0] con los cuatro casos posibles y se ve que
no se debe realizar ninguna acción por lo que en la primera iteración simplemente
se realiza un corrimiento a la derecha:

1.
0000 0000 0111 110[1 0] ->
Ahora los últimos dos dígitos [1 0] indican que se debe realizar la suma P=P+S y
después el corrimiento a la derecha:

2.
1111 1011 0111 110[1 0] P=P+S
1111 1101 1011 111[0 1] ->
Después del corrimiento los últimos dos dígitos son [0 1] por lo que se debe realizar
la suma P=P+A y después el corrimiento a la derecha:

3.
0000 0010 1011 111[0 1] P=P+A
0000 0001 0101 111[1 0] ->
Ahora los últimos dos dígitos son [1 0], se realiza la suma P=P+S y después el
corrimiento a la derecha:

4.
1111 1100 0101 111[1 0] P=P+S
1111 1110 0010 111[1 1] ->
Los últimos dos dígitos [1 1] al igual que cuando fueron [0 0] indican que solo se
debe realizar el corrimiento a la derecha:

5.
1111 1111 0001 011[1 1] ->

De nuevo se tiene [1 1] por lo que se realiza únicamente el corrimiento y en lo


sucesivo se tendrá siempre el mismo caso:

6. 1111 1111 1000 101[1 1] ->


7. 1111 1111 1100 010[1 1] ->
8. 1111 1111 1110 0010 [1] ->

Después de 8 iteraciones termina el algoritmo, se desecha el bit menos significativo


(el bit extra) y se obtiene el producto de la multiplicación:
5*(-6) = 1111 1111 1110 0010 = -30

Cabe mencionar que el número de iteraciones que realiza el algoritmo es igual N,


que es el número de bits de los factores y el resultado final es igual a 2N, en este
caso se multiplican factores de 8 bits por lo que el resultado final es de 16.
Esta es la manera en la que funciona el algoritmo. Solamente hay que tener en
cuenta que al realizar los corrimientos a la derecha se debe mantener siempre el bit
más significativo, esto es que si se tiene '1101' y se realiza el corrimiento el resultado
será '1110' y no '0110'.

Vous aimerez peut-être aussi