Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contador
R1 CON
R2
C R3 R4
Algoritmo Suma Desplazamiento
Se inicializan a 0 el contador de bits del multiplicador y el registro R3
Se carga R1 con el multiplicando A y R2 con el multiplicador B
Se analiza el LSB de R2
Si es 1, se suma R1+ R3 y el resultado se deja en R3
Si es 0, se suma R1 + 0 (es decir, no se hace nada) y el resultado se deja en R3
Se incrementa el contador
Se produce un desplazamiento aritmtico (con extensin de signo) de una
posicin hacia la derecha del conjunto C-R3-R4
Se realiza una rotacin circular a derecha de R2
Se mira si el contador ha llegado hasta el final
En caso negativo se repite el proceso, volviendo a preguntar por el LSB de R2
En caso afirmativo se finaliza el proceso y el resultado est en C-R3-R4
Inicio, R30, Cont0
R1A R2B
0
R20?
1
R3 R3+R1
Incrementa
contador
C-R3-R4
desplaza
derecha
R2 rota circul
NO Cont? SUMA
SI
DESPLAZAMIENTO
Fin
Ejemplo
Multiplicar A=0110 por B=1001
El resultado debe ser 6x9=54 (en binario 0011 0110)
Contador
R1
R2
C R3 R4
Inicializacin
Se carga A en R1 y B en R2.
Se pone a 0 el registro R3 y el contador
Contador
0110 0
1001
0 0000 XXXX
Comprobacin de R20 y accin
Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3
Contador
0110 0
1001
0 0110 XXXX
Incremento contador
Se incrementa el contador en una unidad
Contador
0110 1
1001
0 0110 XXXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
0110 1
1001
0 0011 0XXX
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
0110 1
1100
0 0011 0XXX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
0110 1
1100
0 0011 0XXX
Comprobacin de R20 y accin
Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el
resultado que haba en R3
Contador
0110 1
1100
0 0011 0XXX
Incremento contador
Se incrementa el contador en una unidad
Contador
0110 2
1100
0 0011 0XXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
0110 2
1100
0 0001 10XX
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
0110 2
0110
0 0001 10XX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
0110 2
0110
0 0001 10XX
Comprobacin de R20 y accin
Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el
resultado que haba en R3
Contador
0110 2
0110
0 0001 10XX
Incremento contador
Se incrementa el contador en una unidad
Contador
0110 3
0110
0 0001 10XX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
0110 3
0110
0 0000 110X
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
0110 3
0011
0 0000 110X
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
0110 3
0011
0 0000 110X
Comprobacin de R20 y accin
Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3
Contador
0110 3
0011
0 0110 110X
Incremento contador
Se incrementa el contador en una unidad
Contador
0110 4
0011
0 0110 110X
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
0110 4
0011
0 0011 0110
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
0110 4
1001
0 0011 0110
Ha llegado al final?
Comprueba que el contador es 4 y acaba.
El resultado est en el registro R3 seguido de R4
Contador
0110 4
0011
0 0011 0110
Otro ejemplo
Multiplicar A=1001 por B=0110
El resultado debe ser 9x6=54 (en binario 0011 0110)
Contador
R1
R2
C R3 R4
Inicializacin
Se carga A en R1 y B en R2.
Se pone a 0 el registro R3 y el contador
Contador
1001 0
0110
0 0000 XXXX
Comprobacin de R20 y accin
Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el
resultado que haba en R3
Contador
1001 0 1001
0110
0110 00000
0 0000 XXXX
Incremento contador
Se incrementa el contador en una unidad
Contador
1001 1
0110
0 0000 XXXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1001 1 1001
0110
0110 00000
00000 0
0 0000 0XXX
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1001 1
0011
0 0000 0XXX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
1001 1
0011
0 0000 0XXX
Comprobacin de R20 y accin
Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3
Contador
1001 1 1001
0110
0011 00000
0000 0
1001+
0 1001 0XXX 01001 0
Incremento contador
Se incrementa el contador en una unidad
Contador
1001 2
0011
0 1001 0XXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1001 2 1001
0110
0011 00000
0000 0
1001+
0 0100 10XX 01001 0
00100 10
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1001 2
1001
0 0100 10XX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
1001 2
1001
0 0100 10XX
Comprobacin de R20 y accin
Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3
1001
Contador 0110
1001 2
00000
0000 0
1001
1001+
01001 0
0100 10
0 1101 10XX
1001+
01101 10
Incremento contador
Se incrementa el contador en una unidad
Contador
1001 3
1001
0 1101 10XX
Desplazamiento a derecha
1001
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
0110
00000
Contador
1001 3 0000 0
1001+
1001 01001 0
0100 10
1001+
0 0110 110X 01101 10
00110 110
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1001 3
1100
0 0110 110X
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
1001 3
1100
0 0110 110X
Comprobacin de R20 y accin
1001
0110
Como el LSB de R2 es 0 se suman R3 + 0, es decir,
00000
NO hace nada, y se deja el resultado que haba en R3
0000 0
Contador
1001 3 1001+
01001 0
1100 0100 10
1001+
01101 10
0 0110 110X 0110 110
0000+
00110 110
Incremento contador
Se incrementa el contador en una unidad
Contador
1001 4
1100
0 0110 110X
1001
Desplazamiento a 0110
derecha 00000
0000 0
Se desplaza en conjunto C-R3-R4 una posicin
a la derecha 1001+
Contador
01001 0
1001 4 0100 10
1001+
1100 01101 10
0110 110
0000+
0 0011 0110
00110 110
0011 0110
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1001 4
0110
0 0011 0110
1001
0110
Ha llegado al final? 00000
0000 0
Comprueba que el contador es 4 y acaba.
El resultado est en el registro R3 seguido de R4 1001+
Contador
01001 0
1001 4 0100 10
1001+
0110 01101 10
0110 110
0000+
0 0011 0110
00110 110
0011 0110
MULTIPLICACIN BINARIA SIN SIGNO:
SUMAS Y RESTAS
Fundamentos (I)
Progresin geomtrica de razn r y primer trmino a1
S a1 a1r ... a1r n 1
Finalmente se restan
A(0111000)=A(25+24+23)=A(26-23)
Fundamentos (V)
En general, un nmero que tiene varias cadenas de 1s y 0s se
puede descomponer en varios nmeros con slo una cadena de
1s:
0011001110 = 0011000000 + 0000001110
Que equivale a:
A (27 + 26) + A (23 + 22 + 21)
O lo que es lo mismo a:
A (28 26) + A (24 21) = A (28 26+ 24 21)
Fundamentos (VI)
El mtodo de Sumas y Restas se basa, pues, en multiplicar el
multiplicando por -2 elevado a la posicin en que aparezca un 1
en el multiplicador, movindonos de derecha a izquierda
Multiplicar el multiplicando por +2 elevado a la posicin en que
aparezca un 0, despus de una cadena de 1s
Seguir desplazndonos hacia la izquierda y hacer lo mismo
cuando encontremos un nuevo 1
De nuevo, se repite con la aparicin de un 0
Y as sucesivamente hasta que ya no aparezca ningn 1
Se para cuando empieza la ltima cadena de ceros, haciendo, por
tanto, la ltima suma: para asegurarse, es suficiente con aadir
un 0 a la izquierda del 1 ms significativo del multiplicador
Finalmente se suman TODOS los trminos (de golpe o por partes)
Ejemplo
A=1100 (12) B=1010 (10)
Se completa B con un 0 a la izquierda y se calcula tambin A (A en ca2)
que necesariamente siempre empezar por 1
A=1100 B=01010 -A=10100
Se puede rellenar A con todos los CEROS a la izquierda que sean
necesarios y A con todos los UNOS a la izquierda que sean necesarios
A=001100 B=01010 -A=110100
Cada vez que aparece en el multiplicador B una cadena de unos (aunque
slo tenga un 1) se escribe A multiplicado por 2 elevado a la potencia
donde est dicho 1 y cambiado de signo (-A2s)
Cada vez que aparece en el multiplicador B una cadena de ceros (aunque
slo tenga un 0) se escribe A multiplicado por 2 elevado a la potencia
donde est dicho 0 y sin cambiar el signo (+A2t)
El proceso empieza con la primera cadena de unos que aparezca y termina
con la ltima cadena de ceros (ltimo 0), SIEMPRE MOVINDONOS DE
DERECHA A IZQUIERDA EN EL MULTIPLICADOR
Ejemplo (continuacin)
12 x 10 = 120 A=1100 B=01010 -A=110100
(base 10)
Valor 7 6 5 4 3 2 1 0 Suma
-24 A2 1
1
1 1 0 1 0 0 0
-24
+48 A22 0 0 1 1 0 0 0 0
+24
-96 A23 1 0 1 0 0 0 0 0
-72
4
+192 A2 1 1 0 0 0 0 0 0
+120
0 1 1 1 1 0 0 0
575 = 29 + 25 + 24 + 23+ 22 + 21 + 20
Necesidades
El producto de un nmero binario de n bits con otro
de m bits necesita m+n bits
Sea A el multiplicador y B el multiplicando
En el caso de que m=n, se necesitan dos registros
iguales para almacenar el resultado
Sean R3 y R4 los registros donde se va almacenando
el resultado
Arquitectura
Contador
R1 CON
R2
C R3 R4
Algoritmo de Sumas y Restas
Se inicializan a 0 el contador de bits del multiplicador y el registro R3
Se carga R1 con el multiplicando A y R2 con el multiplicador B
Se analiza R20 , el LSB de R2, y se llama R2-1 al bit donde ir a parar R20 cuando R2 rote a
derechas. R2-1 se inicializa a 0
Se leen los bits del multiplicador de derecha a izquierda
El proceso comienza cuando se lee el PRIMER UNO, haciendo R3R3-R1
En los sucesivos bucles se aplica el siguiente criterio:
Si es el principio de una cadena de unos, se hace la resta R3R3 R1
Si es el principio de una cadena de ceros, se hace la suma R3 R3 + R1
Se incrementa el contador
Se rota hacia la derecha una posicin el conjunto C-R3-R4, con extensin de signo
Se realiza una rotacin circular a derecha de R2
Se mira si el contador ha llegado hasta el final
En caso negativo se repite el proceso, volviendo a preguntar por el LSB de R2
En caso afirmativo se suma R3+R1 dejando el resultado en R3, con lo que se finaliza el
proceso y el resultado queda en R3-R4. ESTO ES EQUIVALENTE A EJECUTAR EL LTIMO
CERO QUE SIEMPRE SE SUPONE QUE TIENE UN NMERO POSITIVO
Inicio, Cont0
R1A R2 B R30 R2-10
Incrementa ALGORITMO DE
contador SUMAS Y RESTAS
C-R3-R4
Desplazamiento a la derecha
Rotacin circular R2
NO Cont? SI
R3 R3+R1 Fin
Ejemplo
Multiplicar A=1100 por B=1010
El resultado debe ser 12x10=120 (en binario 0111 1000)
Contador
R1
R20
R2
R2-1
C R3 R4
Inicializacin
Se carga A en R1 y B en R2.
Se pone a 0 C, el registro R3, el Contador y R2-1
Contador
12 1100 0
R20
1010 0 10
R2-1
0 0000 XXXX
Comprobacin de R20 y accin
Como el LSB de R2 es el primer 0 no se hace nada (todava no ha llegado el
primer 1) y se deja el resultado en C-R3 como estaba
Contador
1100 0
R20
1010 0
R2-1
0 0000 XXXX
Incremento contador
Se incrementa el contador en una unidad
Contador
1100 1
R20
1010 0
R2-1
0 0000 XXXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1100 1
R20
1010 0
R2-1
0 0000 0XXX
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1100 1
R20
0101 0
R2-1
0 0000 0XXX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
12 1100 1
R20
0101 0
R2-1
0 0000 0XXX
0
Comprobacin de R20 y accin
Como el LSB de R2 es 1 (EMPIEZA UNA CADENA DE UNOS) se hace R3 - R1 y se
deja el resultado en C-R3, quedando 0 12 = -12 en complemento a 2
Contador
1100 1
R20
0101 0
R2-1
1 0100 0XXX
-24
-12
Incremento contador
Se incrementa el contador en una unidad
Contador
1100 2
R20
0101 0
R2-1
1 0100 0XXX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1100 2
R20
0101 0
R2-1
1 1010 00XX
-24
-6
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1100 2
R20
0010 1
R2-1
1 1010 00XX
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
12 1100 2
R20
0010 1
R2-1
1 1010 00XX
-6
Comprobacin de R20 y accin
Como el LSB de R2 es 0 (EMPIEZA UNA CADENA DE CEROS) y ya lleg un 1
anteriormente, se suman R3 + R1 y se deja el resultado en C-R3, quedando
-6 + 12 = +6
Contador
1100 2
R20
0010 1
R2-1
0 0110 00XX
+24
+6
Incremento contador
Se incrementa el contador en una unidad
Contador
1100 3
R20
0010 1
R2-1
0 0110 00XX
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1100 3
R20
0010 1
R2-1
0 0011 000X
+24
+3
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
1100 3
R20
1001 0
R2-1
0 0011 000X
Ha llegado al final?
Comprueba que el contador no es 4 y repite el bucle
Contador
12 1100 3
R20
1001 0
R2-1
0 0011 000X
+3
Comprobacin de R20 y accin
Como el LSB de R2 es 1 (EMPIEZA UNA CADENA DE UNOS) se hace R3 - R1 y se
deja el resultado en C-R3, quedando 3 12 = -9
Contador
1100 3
R20
1001 0
R2-1
1 0111 000X
-72
-9
Incremento contador
Se incrementa el contador en una unidad
Contador
1100 4
R20
1001 0
R2-1
1 0111 000X
Desplazamiento a derecha
Se desplaza el conjunto C-R3-R4 una posicin a la derecha
Contador
1100 4
R20
1001 0
R2-1
1 1011 1000
-72
-5
Rotacin circular de R2
El registro R2 rota a la derecha de forma circular
Contador
12 1100 4
R20
0100 1
R2-1
1 1011 1000
-5
Ha llegado al final?
Comprueba que el contador es 4 y acaba, sumando previamente R3 + R1 y dejndolo
en R3, sumando -5 + 12 = +7
El resultado est en el registro R3 seguido de R4. C no es necesario para el resultado
Contador
1100 4
R20
0100 1
R2-1
0 0111 1000
+120
+7
MULTIPLICADOR BINARIO CON SIGNO:
ALGORITMO DE BOOTH
Multiplicacin de nmeros
de distinto signo
Una forma de hacerlo es multiplicar los valores
absolutos con los algoritmos vistos hasta ahora y
asignarle el signo que corresponda, conocido a
priori
Si los dos nmeros son del mismo signo, el resultado
ser positivo. En caso contrario ser negativo.
Cuando el resultado sea negativo, se realizar
adems el complemento a 2
Idea
Sirve para nmeros enteros
Analiza los bits del multiplicador
Toma decisiones en funcin de que comience una
cadena de ceros, de unos o ninguno de los casos
Desplaza a la derecha los resultados provisionales
Fundamentos (I)
Supongamos que vamos a multiplicar un multiplicando A positivo
(expresado en binario sin signo con n bits) por un multiplicador B
negativo, expresado en complemento a 2 tambin con n bits
El producto AB es igual que si se multiplicara sin signo A(2n-|B|)
Ejemplo, con 4 bits, 4x(-3) sera equivalente a 4x13, ya que la representacin de -3 en
ca2 con 4 bits coincide con la de 13 en binario natural con 4 bits, en ambos casos es
1101
Sea R*=A(2n-|B|) lo que sale aplicando el algoritmo de sumas y
restas, en nuestro ejemplo 4x13=52 (binario 00110100)
Sea R=22n - A|B| lo que debera salir (el resultado buscado).
Tngase en cuenta que la potencia 22n queda fuera del campo de
representacin del producto. Las representaciones de R y del
resultado - A|B| coinciden en sus 2n bits menos significativos
En nuestro ejemplo, tanto 244 en binario natural como -12 en complemento a 2 se
representan como 11110100 con 8 bits
Fundamentos (II)
La relacin entre R* y R es la siguiente
R* = A(2n-|B|) = 22n - 22n +A2n A|B|
Como R=22n-A|B|
R* = R + A2n - 22n , donde el valor de 22n en los 2n bits menos
significativos (donde cabe el producto) es irrelevante
Incrementa ALGORITMO
contador DE BOOTH
C-R3-R4
Desplazamiento a la derecha
Rotacin circular R2
NO Cont? SI Fin
Ejemplo
A=11001 (+25) Se trabaja con n=5 bits
B=10111 (-9)
A x B = -225 (1 1100011111)
ca2 (1 1100011111) = 0 0011100001
0 00111000012) = 1+32+64+128 = 225
Inicializacin
Se carga A=11001 en R1 y B=10111 en R2 y R4
Se ponen a 0 el contador, el bit R2-1 y R3
Contador
R1 11001 0
R20
R2 10111 0
R2-1
0 00000 10111
R3 R4
Comprobacin multiplicador y decisin
Comienza cadenas de unos, R3R3-R1, es decir, se
hace 0 00000 + 1 00111 = 1 00111
Contador
R1 11001 0
R20
R2 10111 0
R2-1
1 00111 10111
R3 R4
-25
Incremento contador
Se incrementa el contador
Contador
R1 11001 1
R20
R2 10111 0
R2-1
1 00111 10111
R3 R4
Desplazamiento a derecha
R3 y R4 se desplazan a la derecha, perdindose el bit de la
derecha de R4
Rota R2
Contador
R1 11001 1
R20
R2 01011 1
R2-1
1 10011 11011
R3 R4
-13
Ha llegado al final?
Comprueba que el contador no es 5 y repite el bucle
Contador
R1 11001 1
R20
R2 01011 1
R2-1
1 10011 11011
R3 R4
Comprobacin multiplicador y decisin
No hay cambio de cadena. No se hace nada, salvo
comprobar que R20 y R2-1 son iguales.
Contador
R1 11001 1
R20
R2 01011 1
R2-1
1 10011 11011
R3 R4
Incremento contador
Se incrementa el contador
Contador
R1 11001 2
R20
R2 01011 1
R2-1
1 10011 11011
R3 R4
Desplazamiento a derecha
R3 y R4 se desplazan a la derecha, perdindose el bit de la
derecha de R4
Rota R2 Contador
R1 11001 2
R20
R2 10101 1
R2-1
1 11001 11101
R3 R4
-7
Ha llegado al final?
Comprueba que el contador no es 5 y repite el bucle
Contador
R1 11001 2
R20
R2 10101 1
R2-1
1 11001 11101
R3 R4
Comprobacin multiplicador y decisin
No hay cambio de cadena. No se hace nada, salvo
comprobar que R20 y R2-1 son iguales.
Contador
R1 11001 2
R20
R2 10101 1
R2-1
1 11001 11101
R3 R4
Incremento contador
Se incrementa el contador
Contador
R1 11001 3
R20
R2 10101 1
R2-1
1 11001 11101
R3 R4
Desplazamiento a derecha
R3 y R4 se desplazan a la derecha, perdindose el bit de la
derecha de R4
Rota R2 Contador
R1 11001 3
R20
R2 11010 1
R2-1
1 11100 11110
R3 R4
-4
Ha llegado al final?
Comprueba que el contador no es 5 y repite el bucle
Contador
R1 11001 3
R20
R2 11010 1
R2-1
1 11100 11110
R3 R4
Comprobacin multiplicador y decisin
Comienza cadenas de ceros, R3R3+R1, es decir, se
hace 1 11100 + 0 11001 = 0 10101 (-4+25 = +21)
Contador
R1 11001 3
R20
R2 11010 1
R2-1
0 10101 11110
R3 R4
+21
Incremento contador
Se incrementa el contador
Contador
R1 11001 4
R20
R2 11010 1
R2-1
0 10101 11110
R3 R4
Desplazamiento a derecha
R3, R4 y R2-1 se desplazan a la derecha, perdindose el
bit de la derecha de R4
Contador
R1 11001 4
R20
R2 11101 0
R2-1
0 01010 11111
R3 R4
+10
Ha llegado al final?
Comprueba que el contador no es 5 y repite el bucle
Contador
R1 11001 4
R20
R2 11101 0
R2-1
0 01010 11111
R3 R4
Comprobacin multiplicador y decisin
Comienza cadenas de unos, R3R3-R1, es decir, se
hace 0 01010 +1 00111 = 1 10001 (+10-25 = -15)
Contador
R1 11001 4
R20
R2 11101 0
R2-1
1 10001 11111
R3 R4
-15
Incremento contador
Se incrementa el contador
Contador
R1 11001 5
R20
R2 11101 0
R2-1
1 10001 11111
R3 R4
Desplazamiento a derecha
R3, R4 y R2-1 se desplazan a la derecha, perdindose el
bit de la derecha de R4
Contador
R1 11001 5
R20
R2 01110 1
R2-1
1 11000 11111
R3 R4
-8
Ha llegado al final?
Comprueba que el contador es 5 y acaba
El resultado aparece en ca2 en los 11 bits, C-R3-R4
Contador
R1 11001 5
R20
R2 01110 1
R2-1
1 11000 11111
R3 R4
DIVISIN BINARIA SIN SIGNO:
CON RESTAURACIN
Ejemplo en base 10
79 5
-5
29 15
-25
4
Ejemplo en base 2
5
79 1001111 101
-000 01111
1001
-101 15
1001
-101
1001
-101
1001
-101
100 4
Otro ejemplo en ambas bases
11101 0110 10101 21
-10101 10110
470 22
10000
-00000
47 0 21
100001
-4 2
-10101
11001 22
5 0
-10101 -4 2
1000 8
-00000
1000 8
Arquitectura
BS R1 0 R3 R2
S/R
El contenido de R2 no vara
Algoritmo de Divisin
con Restauracin
Se carga R1 con el dividendo A y R2 con el divisor B. El registro R3 es
irrelevante inicialmente y almacenar el cociente
Se hace la resta R1 R2, para ver si cabe o no cabe
Si el resultado es POSITIVO (s cabe), se introduce un 1 en R3
desde la derecha, desplazando los dems bits de R3 a la izquierda
Si el resultado es NEGATIVO (no cabe), se hace la suma R1 + R2
(para RESTAURAR el dividendo) y el resultado se deja en R1 y se
introduce un 0 en R3 por la derecha, desplazando los dems bits
de R3 a la izquierda
Se desplaza R1 a la izquierda rellenando los huecos con CEROS. Es
como si nos moviramos a la derecha en el dividendo
Se repite el bucle hasta que el bit ms significativo de R3 entre
completamente en el registro R3
El contenido de R2 NUNCA se altera
Finalmente, el cociente queda en R3
Inicio, R3 0
R1A (dividendo) R2B (divisor)
R1 R1-R2
SI R1 R1+R2
NO
R1-R2<0 ?
R31 R30
R1
desplaza DIVISIN CON
izquierda
RESTAURACIN
NO SI
MSB R3? Fin
Ejemplo
Dividir A=1001111 (79 en decimal) entre B=1010000 (80 en decimal)
Suma
R1 R3 R2
R1+R2
R3 0
01001111 00000000 01010000
Desplazamiento R1 R3 R2
Izquierda
1001111 0 0000000 0 01010000
R1 R3 R2
Resta
01001110 00000000 01010000
R1- R2
POSITIVO
Desplazamiento R1 R3 R2
Izquierda
R3 1
1001110 0 00000001 01010000
R1 R3 R2
Resta
01001100 00000001 01010000
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
R3 1
1001100 0 0000001 1 01010000
R1 R3 R2
Resta
01001000 00000011 01010000
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
R3 1
1001000 0 0000011 1 01010000
R1 R3 R2
Resta
01000000 00000111 01010000
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
R3 1
1000000 0 0000111 1 01010000
R1 R3 R2
Resta
00110000 00001111 01010000
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
R3 1
0110000 0 0001111 1 01010000
R1 R3 R2
Resta
00010000 00011111 01010000
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
R3 1
0010000 0 0011111 1 01010000
R1 R3 R2
Resta NEGATIVO 00111111 01010000
R1- R2
R1 R3 R2
Suma 00111111 01010000
00100000
R1+R2
Desplazamiento
R1 R3 R2
Izquierda
R3 0
0100000 0 01111110 01010000
Cifras decimales (I)
Segn el ejemplo visto:
01001111
1010000
es igual a 01111110
Qu significa esto?
Cifras decimales (II)
Como el numerador es menor que el denominador, el
resultado DEBE SER MENOR QUE 1. Por tanto, el valor
de la divisin es:
1001111
1010000
es igual a 0,1111110
En base 10 sera:
2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 = 0,984375 (exacto: 79/80=0,9875)
Cifras decimales (III)
BASE 2 BASE 10 (aprox.) BASE 10 (exacto)
Desplazamiento R1 R3 R2
Izquierda
R3 1
0011 011 1 0101
R1 R3 R2
Resta
NEGATIVO 1 0101
R1- R2
Suma
R1 R3 R2
R1+R2
0011 011 1 0101
R1
Desplazamiento R3 R2
Izqda.
R3 0
0110 11 10 0101
R1 R3 R2
Resta
0001 11 10 0101
R1- R2
POSITIVO
R1
Desplazamiento R3 R2
Izqda.
0011 1 101 0101
R3 1
R1 R3 R2
Resta
NEGATIVO 101 0101
R1- R2
Suma
R1 R3 R2
R1+R2
0011 1 101 0101
Desplazamiento R1 R3 R2
Izqda.
R3 0
0111 1010 0101
R1 R3 R2
Resta
0010 1010 0101
R1- R2
POSITIVO
RESTO
Cuando el proceso
finaliza, los bits de ms
han desaparecido
R3
10101
COCIENTE
DIVISIN BINARIA SIN SIGNO:
SIN RESTAURACIN
Fundamentos (I)
En un determinado momento el dividendo residual DRi est
en R1 y B, el divisor, fijo en R2
Se resta R2, obtenindose DRi -B
Si dicho resultado fue negativo se vuelve a sumar R2,
obtenindose DRi-B+B, para RESTAURAR el dividendo
Se produce un desplazamiento a la izquierda, almacenando
en R1 el valor 2(DRi-B+B)
En el paso siguiente, se vuelve a restar B, quedando
2(DRi - B+B) B, que es igual a 2(DRi-B) + B
Dicha cantidad se podra haber obtenido mucho ms
rpidamente haciendo la resta de B, el desplazamiento SIN
SUMAR (sin restaurar) y finalmente la suma de B
Fundamentos (II)
Siempre hay que mirar el bit de signo (BS) de R1.
Inicialmente se inicializa a 0
Cuando BS=0 (R1 positivo) se restan R1 y R2 dejando el
resultado en R1, se introduce un 1 en R3 por la derecha
y se desplaza R1 a la izquierda
Cuando BS=1 (R1 negativo) se suman R1 y R2 dejando el
resultado en R1, se introduce un 0 en R3 por la derecha
y se desplaza a la izquierda R1
El proceso terminar cuando R3 se llene de bits, siendo
MSB (R3)=1
NOTA: Las introducciones de bits por la derecha en R3
suponen un desplazamiento hacia la izquierda de dicho
registro
Inicio, R3 0, BS 0
R1A (dividendo) R2B (divisor)
0 1
BS?
R1R1-R2 R1R1+R2
R3BS(R1) BS R3BS(R1)
R1
desplaza
izquierda DIVISIN SIN
RESTAURACIN
0 1 Fin
MSB R3?
COMPARACIN
CON Y SIN RESTAURACIN
CON RESTAURACIN SIN RESTAURACIN
Siempre se hace la resta
Se pregunta por el signo del Se pregunta por el signo del
dividendo residual: dividendo residual:
Si fue positivo, bien hecha Si fue positivo, se hace la resta
estaba la resta y se introduce un 1 y se introduce un 1 en R3
en R3
Si fue negativo, era Si fue negativo, se hace la suma
innecesaria y hay que deshacerla y se introduce un 0 por R3
(RESTAURAR) el valor haciendo
una suma y se introduce un 0 por No se hace una operacin previa
R3 para despus deshacerla
Ejemplo
Dividir A=11101010 (234 en decimal) entre B=10001001 (137 en decimal)
-B=1 01110111 (en complemento a 2)
Supongamos que trabajamos con registros de 9 bits,
en complemento a 2,
BS R1 R3 R2
Inicio 0 11101010 000000000 0 10001001
La primera vez BS=0, por tanto,
R1R1-R2
BS
R1 R3 R2
0 11101010 000000000 010001001
1 01110111 +
Resta 0 01100001 000000001
BS
Desplaz. 011000010 0
S CABE
Como BS=0, R1R1-R2
R1 R3 R2
0 11000010 000000001 010001001
1 01110111 +
Resta 0 00111001 000000011
BS
Desplaz. 001110010 0
S CABE
Como BS=0, R1R1-R2
R1 R3 R2
0 01110010 000000011 010001001
1 01110111 +
Resta 1 11101001 000000110
BS
Desplaz. 111010010 0
NO CABE
Como BS=1, R1R1+R2
R1 R3 R2
1 11010010 000000110 010001001
0 10001001 +
Suma 0 01011011 000001101
BS
Desplaz. 010110110 0
S CABE
Como BS=0, R1R1-R2
R1 R3 R2
0 10110110 000001101 010001001
1 01110111 +
Resta 0 00101101 000011011
BS
Desplaz. 001011010 0
S CABE
Como BS=0, R1R1-R2
R1 R3 R2
0 01011010 000011011 010001001
1 01110111 +
Resta 1 11010001 000110110
BS
Desplaz. 110100010 0
NO CABE
Como BS=1, R1R1+R2
R1 R3 R2
1 10100010 000110110 010001001
0 10001001 +
Suma 0 00101011 001101101
BS
Desplaz. 001010110 0
S CABE
Como BS=0, R1R1-R2
R1 R3 R2
0 01010110 001101101 010001001
1 01110111 +
Resta 1 11001101 011011010
BS
Desplaz. 110011010 0
NO CABE
Como BS=1, R1R1+R2
R1 R3 R2
1 10011010 000000110 010001001
0 10001001 +
Suma 0 00100011 110110101
BS
Desplaz. 001000110 0
S CABE
Cifras decimales (I)
Segn el ejemplo visto:
11101010
10001001
es igual a 110110101
Qu significa esto? Como el numerador es mayor
que el denominador, el resultado ser mayor que 1,
pero no mayor que 2, ya que tienen el mismo
nmero de bits. Por tanto, el resultado es:
1,10110101
Cifras decimales (II)
BS R1 R3 R2
Inicio 0110 1011 0101
La primera vez BS=0, por tanto, R1R1-R2
BS
R1 R3 R2
0 110 1011 0101
1 011 +
Resta 0 001 1011
BS
Desplaz. 0011 011 1
Como BS=0, R1R1-R2
R1 R3 R2
0 011 011 1 0101
1 011 +
Resta 1 110 011
BS
Desplaz. 1100 11 10
Como BS=1, R1R1+R2
R1 R3 R2
1 100 11 10 0101
0 101 +
Suma 0 001 11
BS
Desplaz. 0011 1 101
Como BS=0, R1R1-R2
R1 R3 R2
0 011 1 101 0101
1 011 +
Resta 1 110 1
BS
Desplaz. 1101 1010
Como BS=1, R1R1+R2
R1 R3 R2
1 101 1010 0101
0 101 +
Cuando el proceso
Suma 0 010 finaliza, los bits de ms
han desaparecido
RESTO
10101
COCIENTE
COMA FLOTANTE (I)
Inicialmente cada fabricante tena su propia
representacin de nmeros en coma flotante.
Muchos problemas a la hora de transportar
programas y datos entre computadores
El IEEE (Institute of Electrical and Electronics Engineers)
defini un estndar en 1985 para la representacin de
nmeros en coma flotante en binario IEEE 754
En 1987 se extendi el estndar para representar
nmeros en coma flotante independientemente de la
base de numeracin, IEEE 854
Este nuevo estndar no supone cambios a IEEE 754
COMA FLOTANTE (II)
Mantisa 010110101110000101000011
Exponente +1
Exponente + 127 128
0 10000000 010110101110000101000011
En Hexadecimal se podra expresar como 402D70A3
Ejemplo (II)
Determinar qu nmero real representa el hexadecimal
C8860800
El valor binario es
1 100 1000 1 000 0110 0000 1000 0000
Mantisa 000011000001000000
Signo Negativo
Exponente +127 128+16+1 Exponente 18