Professional Documents
Culture Documents
Captulo 11.
18-07-2007
Ntese que P y R deben ser de largo 2N, y el sumador tambin debe ser de largo 2N. En este
algoritmo el nmero de sumas es proporcional a Q, lo cual es demasiado elevado.
18-07-2007
Se emplean las funciones lls y lrs, por logical left shift y logical right shift respectivamente.
Como los bits de signo de Q y R siempre sern ceros, pueden efectuarse corrimientos lgicos o
aritmticos.
Ntese que despus de la operacin se destruye el multiplicando original en Q, y el
multiplicador R.
A continuacin veremos una formulacin analtica de los algoritmos:
Q = q 2
i =0
n 1
Q R = R 2 q + R 2 q + ... + R 2 q + ... + R 2
0
qn
qn-1
qn-2
...
q2
q1
n 1
q0
18-07-2007
i-1,
el
Como qi toma valores 0 1, las primeras dos ecuaciones pueden escribirse como una
alternativa, usando como condicin lgica qi:
if (Qi &1 ) Si = S i-1 + ri ;
r i = r i-1 * 2; Qi = Qi-1/2 ;
La repeticin de n veces, hasta lograr el producto Sn se logra colocando las ecuaciones
anteriores dentro de un bloque repetitivo for(que debe realizarse n veces); adems esta sentencia
permite aplicar los valores iniciales, queda entonces:
Profesor Leopoldo Silva Bijit
18-07-2007
for(i=0, Q0=Q , r0=R, S0=0; i<n+1; i++){ if (Qi &1 ) S i = S i-1+ ri ; r i = r i-1*2; Qi =Qi-1/2} ;
Si consideramos que dentro del bloque de repeticin de un for, las variables que aparecen a la
izquierda de una asignacin representan la instancia i-sima o actual, y que las que ocurren a la
derecha de un smbolo de asignacin representan las instancias (i-1)-simas, podr escribirse el
conjunto de ecuaciones de diferencias sin los subndices dentro del bloque de acciones del for.
Lo mismo puede aplicarse para los subndices de los valores iniciales. Queda entonces el
algoritmo escrito en lenguaje C, segn:
/*Algoritmo 1
S y R de largo 2(n+1). Q largo n+1
/* Q y R positivos
S=R*Q
*/
18-07-2007
Por otra parte, en cada paso, queda un espacio por la extrema izquierda de Q, lugar en que se
puede depositar el bit del resultado que se genera en cada paso de la iteracin. Lo cual, como se
ver, ahorra un registro de largo n+1.
Para la obtencin de un algoritmo que implemente las observaciones anteriores, a partir de las
relaciones de recurrencia del algoritmo 1, se proceder formalmente a obtener las ecuaciones de
diferencias que fundamentan el que denominaremos algoritmo 2.
Bsicamente consisten en expresar las sumas parciales en funcin solamente de R, y no de R
multiplicado por una potencia de dos. Para lograr esto se definen a partir de las sumas Si, las
siguientes relaciones en trminos de las variables si.
Se tienen:
S0 = 0
S1 =S0
S2 =S1
S3 =S2
.......
S n-1 = S n-2
S n = S n-1
+ R q0 20
+ R q1 21
+ R q2 22
+ R q3 23
S 0 /20
S 1 /21
S 2 /22
S 3 /23
= 0 /20
= S 0/21
= S 1/22
= S 2/23
+ R qn-1 2n-1
+ R qn 2n
+ R q0
+ R q1
+ R q2
+ R q3
= 0
= s0/2
= s1/2
= s2/2
+
+
+
+
R q0
R q1
R q2
R q3
= sn-2/2 + R qn-1
= sn-1/2 + R qn
=
=
=
=
s0
s1
s2
s3
= sn-1
= sn
Ordenando las relaciones anteriores y definiendo la variable x, para dividir por dos despus de
realizada la suma, se obtiene:
s0 = 0
+ R q0 ; x0 = s0/2
s1 = s0/2 + R q1 ; x1 = s1/2
s2 = s1/2 + R q2 ; x2 = s2/2
s3 = s2/2 + R q3 ; x3 = s3/2
.......
sn-1 = sn-2/2 + R qn-1 ; xn-1 = sn-1/2
sn = sn-1/2 + R qn ; xn = sn/2
Si qi es uno se suma R con la suma anterior desplazada en uno hacia la derecha (si-1/2).
Ahora x representa la suma anterior dividida por dos:
s0 = 0
+ R q0 ; x0 = s0/2 Con: x-1 = 0
s1 = x0
+ R q1 ; x1 = s1/2
s2 = x1
+ R q2 ; x2 = s2/2
s3 = x2
+ R q3 ; x3 = s3/2
.......
sn-1 = xn-2 + R qn-1 ; xn-1 = sn-1/2
sn = xn-1 + R qn ; xn = sn/2
Si qi es uno se suma R con la suma anterior desplazada en uno hacia la derecha (xi-1).
Con
qn = 0 para nmero positivo.
Para la etapa i-sima:
qi = Qi &1
si = xi-1 + R qi
Profesor Leopoldo Silva Bijit
con x-1 = 0
18-07-2007
con s0 = 0
xi = si/2
Qi = Qi-1/2
con Q0 = Q
Si qi es uno se suma R con la suma anterior desplazada en uno hacia la derecha (xi-1).
Si qi es cero slo se desplazan hacia la derecha las variables s y Q.
for(i=0, Q0= Q , s0 = 0, x-1= 0; i<n; i++){ if (Qi &1 ) s i = x i-1 + R ; Qi =Qi-1/2; xi = si /2 } ;
Eliminando los subndices:
for(i=0, Q= Q , s = 0, x= 0; i<n; i++){ if (Q &1 ) s = x + R ; Q =Q/2; x = s /2 } ;
Se observa que puede eliminarse la variable auxiliar x, utilizando en su lugar la misma variable
s.
Resulta:
/*Algoritmo 2 s, Q y R de largo n+1.
/* Q y R positivos
Al salir sQ= R * Q
18-07-2007
+ R q0
+ R q1
+ R q2
Algoritmo 2.
+ R qn-1
+ R qn
Algoritmo de Booth.
18-07-2007
Es preciso agregar un bit, a la derecha de Q. Para poder comparar, en la etapa i-sima, el ltimo
de Q, qi, con el de la etapa anterior qi-1. Este bit, se inicia en cero, y se denomina qq en el
algoritmo.
Es notable destacar que slo es preciso agregar un flip-flop, para capacitar al hardware del
algoritmo 2 en un dispositivo, para realizar multiplicaciones de operandos con signo.
Como se efectan restas, un producto parcial puede resultar negativo, por esta razn debe
correrse ste a la derecha con extensin del signo. El bit que sale del producto parcial si, debe
ocupar el bit del signo de Q, espacio que queda disponible al mover Q en una posicin hacia a la
derecha.
Por esta razn si Q es otro registro, debe efectuarse un corrimiento lgico (no aritmtico) y
luego escribir, el bit que sale del producto parcial si , en el bit del signo de Q.
/*Alg. 3 S, Q y R de largo n+1.
Sumador ancho n+1 */
/* Q y R con signo
SQ= Q * R
*/
for(i=0, qq=0; i<n+1; i++)
{
if( (Q&1) = =0 && qq = = 1 ) S+=R; /* se suma */
if( (Q&1) = =1 && qq = = 0 ) S-=R;
ars(S,Q,qq)
/*T=S0; ars(S); qq= Q0; lrs(Q); QN-1 = T; */
}
Donde S0 y Q0 son los bits menos significativos de S y Q respectivamente.
Si S, Q y qq fueran concatenados, bastara con ars(S,Q,qq)
Rn
0
0
1
1
0
0
1
1
Cn-1
0
1
0
1
0
1
0
1
Co
0
0
0
1
0
1
1
1
Sn
0
1
1
0
1
0
0
1
18-07-2007
10
R
P
18-07-2007
11
11
1
1
10
1
0
18-07-2007
12
dn-1
dn-2
...
d2
18-07-2007
d1
d0
13
18-07-2007
14
Producto
Con signo
1*(-1) = -1
1*(-2) = -2
1*(-3) = -3
1*(-4) = -3
Qa
001
001
001
001
111
110
101
100
000
000
000
000
Qd Sin
signo
111
7
110
6
101
5
100
4
3*(-3) = -9
3*(-4) =-12
011
011
101
100
001
001
111
100
15
12
Con
signo
+7
+6
+5
+4
P-R
Qd
111
111
111
111
111
111
111
111
111
110
101
100
Con
Signo
-1
-2
-3
-4
+15
+12
101
101
110
110
111
100
-9
-12
18-07-2007
15
Producto
Con signo
(-1)*0 = 0
(-1)*1 = -1
(-1)*2 = -2
(-1)*3 = -3
Qa
111
111
111
111
000
001
010
011
000
000
001
010
Qd Sin
signo
000
0
111
7
110
13
101
21
(-4)*2 = -8
(-4)*3 =-12
100
100
010
011
001
001
000
100
8
12
Con
Signo
+0
+7
+13
+21
P-Q
Qd
000
111
110
101
000
111
111
111
000
111
110
101
Con
Signo
+0
-1
-2
-3
+8
+12
110
101
111
110
000
100
-8
-12
Producto
Con signo
-1*-1 = +1
-1*-2 = +2
-1*-3 = +3
-1*-4 = +4
Qa
111
111
111
111
111
110
101
100
110
101
100
011
Qd Sin
signo
001
49
010
42
011
35
100
28
-4*-3= +12
-4*-4=+16
100
100
101
100
010
010
100
000
20
16
Con
Signo
-15
-22
-29
+28
001
001
001
001
+20
+16
100
100
001
010
011
100
P-R
-Q
000
000
000
000
Qd
001
010
011
100
Con
Signo
+1
+2
+3
+4
011
100
001
010
100
000
+12
+16
El algoritmo para multiplicar nmeros con signo positivo, destruye a medida que se realiza la
multiplicacin al operando Q. No as a R que permanece fijo durante la operacin.
En los casos c) y d) debe emplearse Q para corregir (esto cuando el signo de R es negativo). Si
se observan estos casos puede advertirse que el trmino correctivo es el complemento base de Q
sumado al registro que mantiene la parte ms significativa del producto parcial, es decir P. Si el
bit menos significativo de Q, se introduce complementado en la posicin ms significativa del
producto parcial P, al efectuar el desplazamiento combinado de P y Q, se formar despus de L
pasos, P + Q* bL . Slo resta sumar uno al producto parcial para formar el complemento base
del trmino correctivo asociado a Q. No hay que preocuparse por la generacin de una reserva
de salida, producto de esta suma, ya que cuando Q0 vale 1, C0 vale 0(porque Q0 = 0 y P + R no
se efecta).
Electrnicamente hay que agregar un pequeo circuito al registro de desplazamiento a la
derecha formado por P y Q.
Co
P
18-07-2007
16
Ntese que el or exclusivo, de la figura anterior, puede reemplazarse por un or simple. Esto se
debe a que nunca se da la condicin C0 = 1 y Rn Q0 =1.
En los casos b) y d) debe sumarse el complemento base del multiplicador R al producto parcial
final.
Cuando se efecta el primer corrimiento, se suma el complemento uno del ltimo bit de Q con
la reserva de salida (esto es realizado por la compuerta or exclusivo), y queda en la posicin ms
significativa de P. Al terminar los ciclos de la multiplicacin dicho bit ocupar la posicin
menos significativa de P.
Al efectuar el ltimo corrimiento, se realiza la suma del bit ms significativo de Q con la
reserva de salida, y se deja el resultado en la posicin ms significativa de P.
El siguiente segmento ilustra los detalles. Se asumen enteros de 16 bits, Rn y Qn son iguales a
uno si R y Q son negativos respectivamente. Durante la multiplicacin se suma el complemento
uno de Q al producto parcial, si R es negativo.
Despus del lazo de multiplicacin se efectan las correcciones de acuerdo al signo de los
operandos.
P = 0;
Rn = ( R & (1<<n))>>n;
Qn = ( Q & (1<<n))>>n;
for(i=n;i>=0;i--)
{
if(Q&1)
{S= P + R;
Pn = ( P & (1<<n))>>n;
Sn = ( S & (1<<n))>>n;
if(Rn)
/* carry = (Rn&Pn)|(~Sn&Pn)|(~Sn&Rn)*/
PM = ( (Pn)|(~Sn&Pn)|(~Sn) )<<n;
else PM =(~Sn&Pn)<<n; ;
QM = (S&1)<<n;
}
else
{ S = P;
/*carry =0 Rn&( ~Qn)*/
if(Rn) PM=(1<<n);else PM = 0;
QM = (S&1)<<n;
}
Q>>=1;S>>=1;
Q|=QM; S|=PM; P = S;
}
if(Rn) P+=1; /*termina correccin si R<0 , formando complemento dos*/
if(Qn) P-=R;
/* corrige con Q<0 */
18-07-2007
17
cuociente
resto
divisor
a *= 8
sll
$s0, $s0, 3
18-07-2007
18
18-07-2007
19
ndice general.
CAPTULO 11. .......................................................................................................................................... 1
ALGORITMOS DE MULTIPLICACIN Y DIVISIN....................................................................... 1
11.1. MULTIPLICACIN COMO SUMA REPETITIVA. .................................................................................... 1
11.2. MULTIPLICACIN MEDIANTE DESPLAZAMIENTOS. ........................................................................... 2
11.3. FUNDAMENTACIN DE LOS ALGORITMOS DE MULTIPLICACIN........................................................ 3
11.4. ALGORITMO QUE EMPLEA MENORES RECURSOS DE HARDWARE....................................................... 5
11.5. FUNDAMENTACIN DEL ALGORITMO DE BOOTH, PARA OPERANDOS CON SIGNO. ............................ 8
11.6. MULTIPLICACIN DE ENTEROS SIN SIGNO. ....................................................................................... 9
11.7. OTROS ALGORITMOS PARA LA MULTIPLICACIN DE NMEROS CON SIGNO. ................................... 12
Ejemplos de productos de enteros sin signo y de los trminos de correccin................................... 14
11.8. ALGORITMOS DE DIVISIN. ............................................................................................................ 17
11.9 EN ASSEMBLER MIPS. .................................................................................................................... 17
NDICE GENERAL. ................................................................................................................................... 19
NDICE DE FIGURAS................................................................................................................................. 19
ndice de figuras.
FIGURA 11.1 MULTIPLICACIN ENTEROS UNSIGNED..................................................................................... 9
FIGURA 11.2 HARDWARE DE MULTIPLICACIN. ......................................................................................... 10
18-07-2007