Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Elo311 10 Algoritmos
Elo311 10 Algoritmos
Estructuras de Computadores
Digitales
P=R*Q
Multiplicación como Suma Repetitiva (cont)
Ejemplo: la operación 7*3, en sistema binario puede
realizarse según:
0111*0011 = 0111 + 0111 + 0111 = 010101
Si los factores son de N dígitos, el producto puede
expresarse con 2N dígitos.
Con N=3 en sistema decimal se tiene que con operandos sin
signo, el mayor factor es 999, y se tiene que 999 * 999 =
998.001 requiere 6 cifras.
Si se considera factores positivos, pero con signo, el mayor
positivo es 499 y en este caso también se requieren 6 dígitos
para el producto: 499*499 = 249.001
Multiplicación como Suma Repetitiva (cont)
Empleando el lenguaje C, puede describirse la idea
anterior según:
/* Algoritmo a P y R de largo 2N. Q largo N. Sumador
ancho 2N. */
/* Q y R positivos P = R * Q */
for( j = Q; j > 0 ; j-- )
{
P += R;
}
Nótese que P y R deben ser de largo 2N, y el
sumador también debe ser de largo 2N.
En este algoritmo el número de sumas es
proporcional a Q.
Multiplicación Mediante Desplazamientos
El siguiente algoritmo, corresponde a la multiplicación
manual (con papel y lápiz) en la cual se va
multiplicando las cifras del multiplicando por cada una
de las cifras del multiplicador:
S0 = 0 + R q0 20 = 0 + r0 q0 , r0 = R
S1 = S0 + R q1 21 = S0 + r1 q1 , r1 = 2 r0
S2 = S1 + R q2 22 = S1 + r2 q2 , r2 = 2 r1
S3 = S2 + R q3 23 = S2 + r3 q3 , r3 = 2 r2
.......
Sn-1 = Sn-2 + R qn-1 2n-1 = Sn-2 + rn-1 qn-1 , rn-1 = 2 rn-2
Sn = Sn-1 + R qn 2n = Sn-1 + rn qn , rn = 2 rn-1
El producto queda en Sn.
Fundamentos de Alg. de Multiplicación (cont)
También pueden escribirse:
q0 = Q0 & 1 , Q0 = (Q/20)
q1 = Q1 & 1 , Q1 = (Q/21) = Q0/2
q2 = Q2 & 1 , Q2 = (Q/22) = Q1/2
....
qn = Qn & 1 , Qn = (Q/2n) = Qn-1/2
Resumiendo se tienen las siguientes ecuaciones:
q i = Qi & 1
Si = Si-1 + riqi con S-1= 0
ri = ri-1 * 2 con r0 = R
Qi = Qi-1 / 2 con Q0 = Q
Entonces en la etapa i-ésima, si qi es 1, se suma al producto parcial
anterior Si-1, el multiplicador anterior multiplicado por dos (que es ri).
Algoritmos más eficientes
Se desea desarrollar ahora un algoritmo más eficiente, que emplee
menos recursos electrónicos que el anterior:
Estudiemos la multiplicación binaria de (+26)*(+13) = +338