Está en la página 1de 5

Complemento a dos

Complemento a dos Decimal


0111 7
0110 6
0101 5
0100 4
0011 3
0010 2
0001 1
0000 0
1111 −1
1110 −2
1101 −3
1100 −4
1011 −5
1010 −6
1001 −7
1000 −8

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.
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 "0011 11010" es "1100 00110".

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

00000000 0 0

00000001 1 1
... ... ...

01111110 126 126

01111111 127 127

10000000 −128 128

10000001 −127 129

10000010 −126 130

... ... ...

11111110 −2 254

11111111 −1 255

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
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

+8 1000 n/a n/a n/a 1111

+7 0111 0111 0111 0111 1110

+6 0110 0110 0110 0110 1101

+5 0101 0101 0101 0101 1100

+4 0100 0100 0100 0100 1011

+3 0011 0011 0011 0011 0011

+2 0010 0010 0010 0010 1001

+1 0001 0001 0001 0001 1000

(+)0 0000 0000 0000 0000 0111

(−)0 n/a 1000 1111 n/a n/a

−1 n/a 1001 1110 1111 0110

−2 n/a 1010 1101 1110 0101

−3 n/a 1011 1100 1101 0100

−4 n/a 1100 1011 1100 0011


−5 n/a 1101 1010 1011 0010

−6 n/a 1110 1001 1010 0001

−7 n/a 1111 1000 1001 0000

−8 n/a n/a n/a 1000 n/a

Elaborado por: Denys López