1. Complemento a dos
Complemento a dos Decimal
7
0111
6
0110
5
0101
4
0100
3
0011
2
0010
1
0001
0
0000
−1
1111
−2
1110
−3
1101
−4
1100
−5
1011
−6
1010
−7
1001
−8
1000
Complemento a dos con enteros de 4 bits
El complemento a dos de un número N que, expresado en el sistema binario está
compuesto por n dígitos, se define como:
.
Veamos un ejemplo: tomemos el número N = 45 que, cuando se expresa en binario es N
= 1011012, con 6 dígitos, y calculemos su complemento a dos:
Cabe señalar que en este ejemplo se ha limitado el número de bits a 6, por lo que no
sería posible distinguir entre el -45 y el 19 (el 19 en binario es 10011). En realidad, un
número en complemento a dos se expresa con una cantidad arbitraria de unos a la
izquierda, de la misma manera que un número binario positivo se expresa con una
cantidad arbitraria de ceros. Así, el -45, expresado en complemento a dos usando 8 bits
sería 11010011, mientras que el 19 sería 00010011; y expresados en 16 bits serían
1111111111010011 y 0000000000010011 respectivamente. Se presenta la tabla de
verdad del complemento a 2 para cuatro dígitos.
Cálculo del complemento a dos
El cálculo del complemento a dos es muy sencillo y muy fácil de realizar mediante
puertas lógicas, donde reside su utilidad.
2. Para comenzar los números positivos se quedarán igual en su representación binaria.
Los números negativos deberemos invertir el valor de cada una de sus cífras, es decir
realizar el complemento a uno, y sumarle 1 al número obtenido. Podemos observar esto
en la tabla de ejemplo.
Cabe recordar que debido a la utilización de un bit para representar el signo, el rango de
valores será diferente al de una representación binaria habitual; el rango de valores
decimales para 'n' bits será:
Conversión rápida
Una forma de hallar el opuesto de un número binario positivo en complemento a dos es
comenzar por la derecha (el dígito menos significativo), copiando el número original
(de derecha a izquierda) hasta encontrar el primer 1, luego de haber copiado el 1, se
niegan (complementan) los dígitos restantes (es decir, copia un 0 si aparece un 1, o un 1
si aparece un 0). Este método es mucho más rápido para las personas, pues no utiliza el
complemento a uno en su conversión.1
Por ejemplo, el complemento a dos de quot;0011 11010quot; es quot;1100 00110quot;.
Otra forma es negar todos los dígitos (se halla el complemento a 1) y después sumar un
1 al resultado, viene a ser lo mismo que lo anteriormente explicado.
100001 ---> 011110 -->011111
¿Para qué sirve?
Su utilidad principal se encuentra en las operaciones matemáticas con números binarios.
En particular, la resta de números binarios se facilita enormemente utilizando el
complemento a dos: la resta de dos números binarios puede obtenerse sumando al
minuendo el complemento a dos del sustraendo.
Complemento a dos
Valores con números de 8 bits
Valor del complemento a dos Valor sin signo
0 0
00000000
1 1
00000001
3. ... ...
...
126 126
01111110
127 127
01111111
−128 128
10000000
−127 129
10000001
−126 130
10000010
... ...
...
−2 254
11111110
−1 255
11111111
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 1 Ejemplo 2
1. Empezando desde la derecha encontramos el primer '1' 0101001 0101100
2. Hacemos un NOT a todos los bits que quedan por la izquierda 1010111 1010100