¿Cómo se puede convertir un sumador completo en un sustractor completo con la adición de un circuito inversor?

Primero comencemos desde Full Adder.


Para obtener detalles sobre el sumador completo, lea mi respuesta a la pregunta

¿Qué es un sumador completo?

Ahora, diseñemos un sumador de 4 bits con el sumador completo.

Ahora supongamos que sumamos dos números 12 + 7.

Número A = 12
Número B = 7

La representación binaria de 12 es 1100.
La representación binaria de 7 es 0111

Agreguemos ambos números

1 1 0 0
+ 0 1 1 1
—————
1 0 0 1 1 = 19
—————-

Entonces A + B = 19.

La resta no es más que la suma del cumplido de 2.

Entonces A – B = A + (complemento de 2 de B)

2 ‘complemento de B = 1’s complemento de B + 1
Complemento de 1 de B = Inversión de B.

B = 0111
Complemento de 1 de B = 1000
Complemento de 2 de B = 1001

Entonces A + (2 ‘complemento de B) =

1 1 0 0
+ 1 0 0 1
————
1 0 1 0 1
————
Al invertir el bit Carry, la respuesta será 0 0 1 0 1 = 5.

Entonces A – B; 12-7 = 5.

Ahora tomemos el caso 7 – 12

Entonces A = 7 = 0111
B = 12 = 1100

Complemento de 1 de B = 0011
Complemento de 2 de B = 0100

A + (2’complemento de B) =

0 1 1 1
+ 0 1 0 0
————–
0 1 0 1 1
————–
Como el bit de acarreo es 0, la inversión de 0 es 1, entonces la respuesta es
1 1 0 1 1

Como el bit de signo es 1, este número debe entenderse de la siguiente manera.

1 1 0 1 1
Número de bit de signo

En binario cada vez que se establece el bit de signo, el valor del número es el complemento de 2 de los dígitos restantes. En este caso el valor es
Complemento de 2 de 1011 = Complemento de 1 1011 + 1.
= 0100 + 1 = 5.

Como el bit de signo es 1, la respuesta es -5.

Entonces 7-12 = -5

Ahora veamos cómo implementar la lógica anterior en el circuito digital.

Si necesitas más detalles escribe un comentario. Lo explicaré.

Todo lo mejor.

Aquí hay un circuito de sumador completo:
La tabla de verdad para lo anterior:

SALIDAS, ENTRADAS
A B CIN COUT S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

La resta no es más que la suma del complemento de uno de los operandos más uno .

Existe el concepto de cumplido, que toma cualquier número en forma binaria y lo invierte. Por ejemplo, el número 13 en binario es 1101. El cumplido de uno es 0010, o 2.

Digamos que queremos realizar la resta de 13 de 15. Sabemos que 15 es 1111 en binario.

Así que tome el cumplido de 13, que es 0010. Agregue esto a 1111.

_1111
+0010
_—-
10001

Luego agregue 1.

10001
+ 1
—–
10010

¿Espere? ¿Qué? 15-13 es … 18? Amigo … me estás mintiendo, crees, ¿verdad?

Lo que realmente sucede es que el bit más significativo termina al final de nuestro “espacio de almacenamiento” de 4 bits. No mencioné esto antes, pero supongo que nuestro espacio problemático es de 4 bits de ancho. Los resultados son los mismos para cualquier número de bits de ancho. El resultado de la adición de bits más significativa se convierte en la ejecución de nuestro sumador completo de cuatro bits.

Y nos queda, entonces, con 0010 o 2, que es la respuesta correcta a 15-13.

Ahora reduzca esto al circuito. Todo lo que tenemos que hacer es poner un inversor en la entrada B. Luego, ate la entrada de Cin alto para proporcionar el “y luego agregue uno”.

La tabla de verdad para lo anterior:

SALIDAS, ENTRADAS
A B CIN COUT S
0 0 1 1 0
0 1 1 0 1
1 0 1 1 1
1 1 1 1 0

Si necesitamos usar Cin, Cout se convierte en 0, lo que indica que hemos tomado prestado. Eso sucede solo cuando A es 0 y B es 1, porque ya has hecho esto:

1 (prestado)
_0
-1
_-
_1

2-1 = 1

Esta es la razón por la cual en operaciones de máquina como los códigos de operación 6502, un código de operación SBC (sustraer) siempre va precedido por un código de operación SEC (set carry). Si la bandera de acarreo se borra después del SBC, indica que ocurrió un “acarreo negativo” (o préstamo).

Fuente: Half Adder y Full Adder Circuit

Haga una cosa, dibuje la tabla de verdad del sumador completo y del sustractor completo. Inmediatamente notará que la expresión para SUMA y DIFERENCIA es la misma, solo que la expresión para CARRY y BORROW son diferentes. Simplifique las expresiones para CARRY y BORROW. Terminas con una expresión reducida para CARRY = AB + BC + CA (A, B, C son los tres bits que se agregarán con A como MSB) y BORROW = A’C + A’B + BC, por lo tanto, usa solo uno no compuerta para complementar el bit A, puede diseñar el circuito lógico para la parte BORROW con el circuito lógico para la parte SUM que permanece igual.

La mejor recompensa por usar el sistema de números binarios para los sistemas digitales como las computadoras es que ofrece ciertas ventajas excelentes, como los sistemas complementarios de uno y dos. Con estos, puede convertir todas las sustracciones binarias en adiciones binarias y, por lo tanto, usar solo sumadores e inversores.

Por supuesto, podemos usar el sistema de complemento de 9 y 10 para números decimales, pero este tipo de complemento viene con un aumento en la complejidad. Pero en binario, el complemento se puede hacer simplemente invirtiendo los bits individuales y finalmente agregando nuevamente el acarreo resultante, u obteniendo el complemento de 2 del número que se restará y finalmente dejando caer el acarreo.

Para una mejor vista Puede ver este video, [1]. Difícil es todo en idioma bengalí pero escrito en inglés. Tutorial de sumador completo en bengalí.

Notas al pie

[1] Tutorial de sumador completo en bengalí

Este ha sido respondido ad nauseum y ya existe en quora. ¿Por qué no diseñar sumas / restas en su circuito desde el primer momento? Aquí hay uno bueno:

Sumador / sustractor binario paralelo