martes, 17 de noviembre de 2009

4.5 MULTIPLICACION Y DIVICION


La multiplicación entera es una operación bastante costosa y, por ello, al principio, no todos los microprocesadores la tenían implementada debiéndose multiplicar por programa.

Existen varios algoritmos de multiplicación: sumas y restas, Booth, grupos solapados. Dependiendo del algoritmo se pueden multiplicar números con signo o sin signo.
Algoritmo de sumas y restas: consiste en ir explorando el bit menos significativo del registro de desplazamiento y en caso de ser 1 sumar el multiplicando y desplazar o simplemente desplazar. Recoge realmente el mecanismo de multiplicación a mano.
Algoritmo de Booth: se ideo pensando en números representados en complemento a 2 y reduce el número de sumas, evitando las que son 0. Se basa en buscar cadenas de unos y de re codifica el multiplicador.

Al igual que la multiplicación, la división se trata de una operación compleja. Existen muchos algoritmos para realizar esta operación, dos de ellos son los siguientes:

División con restauración
1) Dividendo parcial inicial: tomar tantos bits del dividendo como tenga el divisor. Garantizar que tanto el dividendo como el divisor son positivos (si empiezan por 1 añadirle un cero a la izquierda).

2) Sumar al dividendo el complemento a 2 del divisor
Si el resultado es positivo:
Bajar un nuevo bit del dividendo
Añadir 1 al cociente
Si el resultado es negativo
Sumar de nuevo el divisor
Bajar un nuevo bit al divisor
Añadir 0 al cociente
3) Repetir hasta que no queden mas bits para bajar el dividendo


División sin restauración
Mejora el anterior evitando la fase de restauración si el resultado es negativo
1) Dividendo parcial inicial: tomar tantos bits del dividendo como tenga el divisor. Garantizar que tanto el dividendo como el divisor son positivos (si empiezan por 1 añadirle un cero a la izquierda).

2) Sumar al dividendo el complemento a 2 del divisor
Si el resultado es positivo:
Bajar un nuevo bit del dividendo
Añadir 1 al cociente
Si el resultado es negativo
Sumar el divisor en vez del complemento a 2 la próxima vez
Bajar un nuevo bit al divisor
Añadir 0 al cociente
3) Repetir hasta que no queden mas bits para bajar el dividendo

No hay comentarios:

Publicar un comentario