Vous êtes sur la page 1sur 8

https://www.youtube.com/watch?

v=Z4EeqlMUwlQ
RANGO DE REPRESENTACIN DEL COMPLEMENTO A
DOS DE UN NMERO BINARIO
ALGORITMOS DE BOOTH
El algoritmo de multiplicacin de Booth es un algoritmo
de multiplicacin que multiplica dos nmeros binarios con
signo en la notacin de complemento a dos. El algoritmo fue
inventado por Andrew Donald Booth en 1950 mientras que
haca investigacin sobre cristalografa en la universidad de
Bloomsbury, en Birkbeck, Londres. Booth usaba
calculadoras de escritorio que eran ms rpidas en el
desplazamiento que sumando, y cre el algoritmo para
aumentar su velocidad. El algoritmo de Booth es de inters
en el estudio de la arquitectura de computadoras.
Supngase dos nmeros, multiplicando y multiplicador, con
longitudes en bits, x para el primero, e Y para el segundo:

Construimos una matriz de tres filas y x+y+1 columnas.


Identificaremos las filas como, A la primera, S la
segunda y P la tercera.
Se inician los x primeros bits de cada fila con:
o

A, el multiplicando.

S, el complemento a dos del multiplicando.

P, ceros.

Los siguientes y bits se completan con:


o

A, ceros.

S, ceros.

P, el multiplicador.

Para finalizar la matriz, se inician a 0 todos los valores


de la ltima columna.

Una vez iniciada esta matriz, se realiza el algoritmo.

Se realizan y iteraciones del siguiente bucle:


1.Comparar los dos bits menos significativos de P,
para realizar la siguiente accin:

00 o 11: no se hace nada.


01: P = P + A. Se ignora el desbordamiento
(overflow).
10: P = P + S. Se ignora el desbordamiento.

2.Desplazamiento aritmtico de P a la derecha (se


conserva el bit de signo).

Finalmente, tras y iteraciones, se elimina (mediante un


desplazamiento) el ltimo bit de la derecha (menos
significativo), obteniendo el resultado.

Supongamos que queremos multiplicar dos nmeros 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 de la siguiente manera:
A=0000

0101

0000

0000

S=1111
P=0000

1010
0000

0000
1111

0000
1010

0
0

El byte superior de A est formado por el multiplicando,


el siguiente byte se forma con ceros y se agrega un bit
extra que tambin es 0.
El byte superior de S est formado por el complemento
a dos del multiplicando, el siguiente byte al igual que el
caso anterior se forma con ceros y al final se agrega un
bit extra que es 0.
El byte superior de P est formado por ceros, el
siguiente byte es el valor del multiplicador y por ltimo
se tiene el bit extra.
Se puede observar que los tres nmeros formados son de
17 bits cuando los nmeros que se van a multiplicar son
de 8 de modo que los nmeros formados siempre sern
de N+1 bits, siendo N el nmero de bits de los factores.
Sigamos entonces. Este algoritmo consiste en comparar
los ltimos dos dgitos del nmero P y dependiendo del
caso que sea realizar una suma o no realizar ninguna
accin. Luego de evaluar cada caso se debe realizar un
corrimiento a la derecha, manteniendo el valor del bit
ms significativo y desechando el valor del bit menos
significativo. Los cuatro casos que se tienen se pueden
ver en la siguiente tabla:
0 0 -> No realizar ninguna accin
0 1 -> P = P + A

1 0 -> P = P + S
1 1 -> No se realiza ninguna accin

Veamos el algoritmo paso a paso usando los nmeros A,


S y P de arriba. Primero tenemos el nmero P original:
0000 0000

1111

101 [0 0]

Se comparan los ltimos dos dgitos [0 0] con los cuatro


casos posibles y se ve que no se debe realizar ninguna
accin por lo que en la primera iteracin simplemente se
realiza un corrimiento a la derecha:
1.
0000

0000

0111

110 [1 0]

Ahora los ltimos dos dgitos [1 0] indican que se debe


realizar la suma P=P+S y despus el corrimiento a la
derecha:
2.
1111

1011

0111

110 [1 0]

P=P+S

1111

1101

1011

111 [0 1]

Despus del corrimiento los ltimos dos dgitos son [0 1] por


lo que se debe realizar la suma P=P+A y despus 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 dgitos son [1 0], se realiza la suma


P=P+S y despus el corrimiento a la derecha:

4.
1111

1100

0101

111 [1 0]

P=P+S

1111

1110

0010

111[1 1]

Los ltimos dos dgitos [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]

1111

1100

010 [1 1]

1111

1110

0010 [ 1 ]

7.
1111
8.
1111

Despus de 8 iteraciones termina el algoritmo, se desecha


el bit menos significativo (el bit extra) y se obtiene el
producto de la multiplicacin:
5 * (-6) = 1111 1111

1110

0010 = -30

Cabe mencionar que el nmero de iteraciones que realiza el


algoritmo es igual a N, que es el nmero 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
ms significativo, esto es que si se tiene '1101' y se realiza
el corrimiento el resultado ser '1110' y no '0110'.
EJERCICIOS:
Utilizando el algoritmo de Booth para nmeros binarios,
realizar las siguientes operaciones:
b)

310 X 510
410 X 310

c)

610 X 510

a)

d)

910 X 710

Vous aimerez peut-être aussi