La mejor respuesta
Una tabla de verdad es una tabla que le da el resultado de una función booleana para cualquier combinación posible de entradas. Un sumador completo es una función booleana (o una pieza de hardware que la implementa) que, dados dos enteros de 2 bits, le da la suma de esos enteros, incluida la transferencia. (Un medio sumador solo suma los números pero ignora el traspaso). Si tiene dos enteros de 2 bits como entrada, hay 16 entradas posibles, por lo que su tabla tendrá 16 filas. Así es como puede verse si sus entradas son ayb con bits, la salida es xabx 00 00 000 00 01 001 00 10010 00 1 1011 01 00001 01 01010 01 10011 01 11100 11 00 011 10 01 011 10 10100 10 11 101 11 00 011 11 01 100 11 10 101 11 11 110
Responder
La respuesta simplista es «lo que el diseñador quiera».
Cuando comencé a estudiar diseño por computadora a fines de la década de 1970, tenía experiencia en matemáticas y, en menor medida, en programación de computadoras. Algunos de los primeros trabajos que realicé incluyeron el diseño y la implementación de conjuntos de instrucciones, y en particular, de las operaciones aritméticas. Todo esto requería que tuviera que desarrollar una comprensión de la aritmética informática y, debido a los antecedentes, lo hice desde un punto de vista matemático ligeramente abstracto. Esto contrastaba con lo expuesto en muchos libros de texto de electrónica y diseño de computadoras que establecen funciones (por ejemplo, sumadores) y su implementación, pero no siempre dan motivación.
El motivat El ion para implementar un sumador es tomar dos conjuntos de bits («palabras»), que representan números, y producir una salida que represente la suma de esos bits. Hay tres preguntas clave para hacer aquí. Primero, cuáles son los números que estamos tratando de representar. En segundo lugar, ¿cómo se representan estos números como bits? Y en tercer lugar, ¿qué se supone que sucederá si la suma de los dos números no se puede representar como un conjunto de bits?
Una situación común (N-bit, little endian, entero sin signo) es que un La palabra de N bits se utiliza para representar los números enteros [0,2^N-1],
y la palabra B[N-1]...B[0]
representa el valor ΣB[i]2^i: i in [0,N-1].
La tercera pregunta es un problema: la suma de las dos entradas puede estar en el rango [0,2*(2^N-1)]
y, por lo tanto, hay resultados que no se pueden representar.
A La implementación simple de un libro de texto de un «sumador de N bits» lo construye a partir de N «sumadores completos de 1 bit». Además de los 2 conjuntos de N bits de operando, hay un bit de arrastre (forzado a cero) y un bit de arrastre. Si se puede representar el resultado matemático de la suma, entonces los N bits del resultado del sumador serán la representación correcta del resultado, y el resultado será 0. Si, por otro lado, el resultado matemático de la suma no puede ser representada, entonces los N bits del resultado del sumador serán la representación correcta del resultado módulo 2 ^ N, y la ejecución será 1. En resumen, este sumador siempre produce el resultado correcto módulo 2 ^ N y llevar a cabo indican que el resultado correcto no es representable. Algunos sistemas informáticos querrán tratar esto como un error, quizás registrándolo en una bandera o provocando una excepción.
Otra situación común (N-bit, little endian, entero con signo en complemento a dos) es que un La palabra de N bits se utiliza para representar los números enteros [-2^(N-1),2^(N-1)-1],
y la palabra B[N-1]...B[0]
representa el valor -B[N-1]*2^N + ΣB[i]2^i: i in [0,N-1]*.
Nuevamente, hay resultados que no se pueden representar. El sumador descrito anteriormente produjo el resultado correcto para todos los resultados representables (razón por la cual se usa la aritmética de complemento a dos). Sin embargo, la realización no indica si el resultado es representable. (Considere -1 + 1 = 0 que produce un acarreo y 0 + 0 = 0 que no lo hace). Para el complemento a dos, la condición que representa un resultado imprimible (comúnmente llamado «desbordamiento») es que el bit de signo (bit más significativo) del resultado es «inesperado», es decir, la suma de dos números negativos parece ser positivo, o la suma de dos números positivos parece ser negativa (ejercicio para el lector para mostrar que la suma de dos números de signos diferentes siempre se puede representar).
Algunas otras representaciones pueden usar los mismos sumadores como enteros con y sin signo. Para representaciones fraccionarias donde el valor de una palabra es el valor de la palabra, tratada como un número entero, dividido por una potencia de dos, el sumador produce el resultado correcto cuando el valor es representable. Sin embargo, en los sistemas que utilizan estas representaciones, a veces el comportamiento deseado es que los resultados se “saturen”, es decir, el resultado está fuera de rango, la suma es el valor más positivo o más negativo, según corresponda. Otros sistemas 2 uno de los valores (típicamente 10… 0) para usar como valor de error que luego se propagará a través de operaciones posteriores. En este caso, se necesitará un sumador especial.
* Esta formulación hace explícita la forma de complemento a dos: el valor con signo de la palabra es el valor sin signo de la palabra menos 2 ^ N veces el bit superior (bit de signo). De manera equivalente, el valor se puede escribir -B[N-1]*2^(N-1) + ΣB[i]2^i: i in [0,N-2]
que corresponde al bit superior que representa 0 o -1 en lugar de 0 o +1.