SUMADOR RESTADOR DE 3 BITS EN COMPLEMENTO A 2

Anuncio
SUMADOR RESTADOR DE 3 BITS EN BINARIO NATURAL.
Sabemos que a un sumador de n bits, haciéndole un pequeño cambio, lo podemos
convertir en sumador y restador. Simplemente se complementan a 1 los bits del sustraendo y
además se añade un 1 por la entrada de acarreo. La suma de dos números de n bits necesitan n
+1 bits para poder expresarse sin overflow.
A2 A1 A0
B2
B1
B0
S/R
S/R = 0  suma
S/R = 1  resta
sumador
S3
S2 S1 S0
Una señal de control S/R decide si se hace o no ese cambio, y, por tanto, si se resta o
suma, respectivamente.
Veamos algunos ejemplos de sumas:
(2 + 5 = 7)
0
1
0
1
0
1
0
0
1
0
1
sumador
0
1
1
1
0
1
0
Resultado
(6 + 7 = 13)
1
1
0
1
1
1
0
1
1
0
1
1
1
0
sumador
1
1
0
1
Resultado
Veamos algunos ejemplos de restas:
(6 – 3 = 3)
1
1
0
0
1
1
1
1
1
0
1
sumador
1
0
1
0
0
1
1
El resultado es +3, pero despreciando el bit de acarreo de salida.
Resultado
¿Qué ocurre si el minuendo es menor que el sustraendo?
Veámoslo con un ejemplo:
(4 - 6 = -2)
1
0
0
1
1
0
1
1
0
0
0
sumador
0
1
1
0
1
1
0
Si mirásemos los 4 bits, el resultado sería +6, lo cual es falso, pero si miramos sólo los
tres últimos bits, el resultado sería también +6.
En resumidas cuentas, el sumador restador para binario natural sólo sirve para sumar,
sin problemas, y para restar, cuando el resultado de la resta es positivo.
Veamos qué ocurriría si quisiéramos hacer esta operación con números con signo.
SUMADOR RESTADOR DE 3 BITS EN COMPLEMENTO A 2.
Sea A un número de 3 bits en complemento a 2 (A2, A1, A0), donde A2 es el bit de
signo. Sea B un número de 3 bits en complemento a 2 (B2, B1, B0), donde B2 es el bit de
signo. Vamos a realizar un sumador restador para A y B, basándonos en la idea del sumador
restador binario.
El rango de números representados es [-4, +3], si bien el rango de posibles resultados
es [-8,+6], que necesita 4 bits en complemento a 2.
Vamos a considerar todos los casos posibles, teniendo en cuenta que A puede ser
positivo o negativo, que B puede ser positivo o negativo y que podemos sumar o restar,
resultan 8 casos
Caso 1. Sumar un número positivo con otro positivo.
Caso 2. Sumar un número positivo con otro negativo.
Caso 3. Sumar un número negativo con otro positivo.
Caso 4. Sumar un número negativo con otro negativo.
Caso 5. Restar un número positivo de otro positivo.
Caso 6. Restar un número negativo de otro positivo.
Caso 7. Restar un número positivo de otro negativo.
Caso 8. Restar un número negativo de otro negativo.
Ej: +3 +2 = +5
Ej: +3 + (-2) = +1
Ej -2 + (+3) = +1
Ej: -2 + (-3) = -5
Ej: +2- (+3) = -1
Ej: +3 - (-2) = +5
Ej: -2 – (+3) = -5
Ej: -2 –(-3) = +1
En los casos 1, 4, 6 y 7 necesitan los 4 bits, ya qye en resultado excede el margen de
representación con 3 bits [-4,+3], mientras que en los restantes casos (2, 3, 5 y 8) sólo se
necesitan 3 bits, ya que el resultado está dentro del citado margen de representación.
Veámoslo en binario en cada caso.
SUMA
CASO 1
011(+3)
010 (+2)
0 +
------- 0101(+5)
necesita 4 bits
CASO 2
011(+3)
110 (-2)
0+
------
1001(+1)
necesita 3 bits
CASO 3
110(-2)
011 (+3)
0 +
------
1001(+1)
necesita 3 bits
CASO 4
110 (-2)
101 (-3)
0 +
-----1011 (-5)
necesita 4 bits
CASO 6
011(+3) 001[ca1(-2)]
1+
------
0101 (+5)
necesita 4 bits
CASO 7
110(-2) 100[ca1(3)]
1+
------
1011(-5)
necesita 4 bits
CASO 8
110(-2)
010[ca1(-3)]
1 +
-----1001 (+1)
necesita 3 bits
RESTA
CASO 5
010(+2) 100[ca1(3)]
1 +
------- 111(-1)
necesita 3 bits
En el caso en que sólo se necesitan 3 bits, para expresar el resultado con 4 bits, hay
que hacer una EXTENSIÓN DE SIGNO, es decir, forzar a que el cuarto bit sea igual que el
tercero.
Signo A
Positivo
Positivo
Negativo
Negativo
Positivo
Positivo
Negativo
Negativo
Signo B
Positivo
Negativo
Positivo
Negativo
Positivo
Negativo
Positivo
Negativo
Operación
Suma
Suma
Suma
Suma
Resta
Resta
Resta
Resta
¿Necesita 4 bits?
Sí
No
No
Sí
No
Sí
Sí
No
Caso
1
2
3
4
5
6
7
8
Como se puede ver, cuando se suman dos números de distintos signo o cuando se
restan dos números del mismo signo, se necesitan 3 bits y en el caso contrario se necesitan 4
bits.
La tabla anterior también se puede poner de la siguiente forma:
S/R
0
0
0
0
1
1
1
1
A2
0
0
1
1
0
0
1
1
B2
0
1
0
1
0
1
0
1
F
1
0
0
1
0
1
1
0
Caso
1
2
3
4
5
6
7
8
donde S/R=0 significa suma y S/R=1 significa resta. F=0 significa que hay que hacer
extensión de signo (necesita 3 bits), mientras que F=1 significa que la salida de acarreo es el
4º bits (necesita 4 bits).
Finalmente, la función F decidirá cuál de las dos posibles opciones se saque como 4
bits. F se puede implementar de forma sencilla con puertas y puede ser la línea de selección
de un MUX 2x1 para elegir entre el bit de salida de acarreo o entre la tercera línea del
sumador restador.
Descargar