Sum Ad or Rest Ad or 3 Bits
Sum Ad or Rest Ad or 3 Bits
Sum Ad or Rest Ad or 3 Bits
Sabemos que a un sumador de n bits, hacindole un pequeo cambio, lo podemos convertir en sumador y restador. Simplemente se complementan a 1 los bits del sustraendo y adems se aade un 1 por la entrada de acarreo. La suma de dos nmeros de n bits necesitan n +1 bits para poder expresarse sin overflow.
A2 A1 A0
B2
B1
sumador
S3
S2 S1 S0
Una seal 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)
1 0
1
0
sumador
Resultado
(6 + 7 = 13)
1 0
1
0
sumador
Resultado
1 1
0
1
sumador
Resultado
(4 - 6 = -2)
0 1
1
1
sumador
Si mirsemos los 4 bits, el resultado sera +6, lo cual es falso, pero si miramos slo los tres ltimos bits, el resultado sera tambin +6. En resumidas cuentas, el sumador restador para binario natural slo sirve para sumar, sin problemas, y para restar, cuando el resultado de la resta es positivo. Veamos qu ocurrira si quisiramos hacer esta operacin con nmeros con signo.
En los casos 1, 4, 6 y 7 necesitan los 4 bits, ya qye en resultado excede el margen de representacin con 3 bits [-4,+3], mientras que en los restantes casos (2, 3, 5 y 8) slo se necesitan 3 bits, ya que el resultado est dentro del citado margen de representacin. Vemoslo 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
RESTA
CASO 5 010(+2)
100[ca1(3)]
1 +
-------
111
(-1)
necesita 3 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
En el caso en que slo se necesitan 3 bits, para expresar el resultado con 4 bits, hay que hacer una EXTENSIN 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 Operacin 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 nmeros de distintos signo o cuando se restan dos nmeros del mismo signo, se necesitan 3 bits y en el caso contrario se necesitan 4 bits. La tabla anterior tambin 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 extensin de signo (necesita 3 bits), mientras que F=1 significa que la salida de acarreo es el 4 bits (necesita 4 bits). Finalmente, la funcin F decidir cul de las dos posibles opciones se saque como 4 bits. F se puede implementar de forma sencilla con puertas y puede ser la lnea de seleccin de un MUX 2x1 para elegir entre el bit de salida de acarreo o entre la tercera lnea del sumador restador.