1. Complemento a dos
Los problemas de las múltiples representaciones del 0 y la necesidad del
acarreo de salida, se evitan con un sistema llamado Complemento a dos. En el
complemento a dos, los números negativos se representan mediante el patrón
de bits que es un bit mayor (sin signo) que el complemento a uno del valor
positivo. En el complemento a dos, hay un solo cero (00000000). Para negar un
número (negativo o positivo) invertimos todos los bits y añadimos un 1 al
resultado. La suma de un par de números enteros en complemento a dos es la
misma que la suma de un par de números sin signo (excepto para la detección
de desbordamiento si se usa). Por ejemplo, la suma en complemento a dos de
127 y –128 da el mismo patrón de bits que la suma sin signo del 127 y 128, tal
y como se puede ver en la tabla de abajo. El valor -8, representado en binario
con cuatro bits (1000) es un caso especial, ya que su complemento a dos es el
mismo, es necesario cinco bits para su representación (01000).
Una forma fácil de implementar el complemento a dos es la siguiente:
Ejemplo Ejemplo
1 2
1. Empezando desde la derecha encontramos el primer '1' 0101001 0101100
2. Hacemos un NOT a todos los bits que quedan por la
1010111 1010100
izquierda
Tabla de comparación
La tabla siguiente compara la representación de los enteros entre 8 y -8
(incluidos) usando 4 bits.
Representación de enteros de 4 bits
Decimal Entero Signo y Complemento Complemento BCD-
positivo magnitud a1 a2 exceso 8
1000 n/a n/a n/a 1111
+8
0111 0111 0111 0111 1110
+7
0110 0110 0110 0110 1101
+6
0101 0101 0101 0101 1100
+5