Sunteți pe pagina 1din 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 nmero N que, expresado en el sistema binario est
compuesto por n dgitos, se define como:
.
El total de nmeros positivos ser y el de negativos , siendo n el nmero
mximo de bits. El 0 contara aparte.
Veamos un ejemplo: tomemos el nmero que, cuando se expresa en binario
es , con 6 dgitos, y calculemos su complemento a dos:
Cabe sealar que en este ejemplo se ha limitado el nmero de bits a 6, por lo que no
sera posible distinguir entre el -45 y el 19 (el 19 en binario es 10011). En realidad, un
nmero en complemento a dos se expresa con una cantidad arbitraria de unos a la
izquierda, de la misma manera que un nmero binario positivo se expresa con una
cantidad arbitraria de ceros. As, el -45, expresado en complemento a dos usando 8 bits
sera 11010011, mientras que el 19 sera 00010011; y expresados en 16 bits seran
1111111111010011 y 0000000000010011 respectivamente. Se presenta la tabla de
verdad del complemento a 2 para cuatro dgitos.
Clculo del complemento a dos
El clculo del complemento a dos es muy sencillo y muy fcil de realizar mediante puertas
lgicas, donde reside su utilidad.
Para comenzar los nmeros positivos se quedarn igual en su representacin binaria. Los
nmeros negativos deberemos invertir el valor de cada una de sus cifras, es decir realizar
el complemento a uno, y sumarle 1 al nmero obtenido. Podemos observar esto en la
tabla de ejemplo.
Cabe recordar que debido a la utilizacin de un bit para representar el signo, el rango de
valores ser diferente al de una representacin binaria habitual; el rango de valores
decimales para n bits ser:

Conversin rpida
Una forma de hallar el opuesto de un nmero binario positivo en complemento a dos es
comenzar por la derecha (el dgito menos significativo), copiando el nmero original (de
derecha a izquierda) hasta encontrar el primer 1, despus de haber copiado el 1, se
niegan (complementan) los dgitos restantes (es decir, copia un 0 si aparece un 1, o un 1
si aparece un 0). Este mtodo es mucho ms rpido para las personas, pues no utiliza el
complemento a uno en su conversin.1
Por ejemplo, el complemento a dos de 0011 11010 es 1100 00110-
Otra forma es negar todos los dgitos (se halla el complemento a 1) y despus sumar un 1
al resultado, viene a ser lo mismo que lo anteriormente explicado.
100001 ---> 011110 --> 011111
Es equivalente negar todos los dgitos haciendo XOR contra un nmero con la misma
cantidad de dgitos binarios pero lleno de 1s y sumar 1 al resultado. En la prctica podra
explicarse como:
100001 XOR 111111 = 011110
Agregando 1 = 011111
Para implementarlo en una rutina escrita en el lenguaje de programacin C, asumiendo
que 'x' es la cantidad a la que se le calcular el complemento a 2, 'n' el nmero mximo
de bits de las cantidades representadas y 'y' es la variable en donde se almacenar el
resultado. El clculo podra escribirse como:
y=((x^^(2^n-1)++))&&(2^n-1);
Si 'n' no va a cambiar a lo largo del programa, puede sustituirse como una constante y con
ello acelerar el clculo y disminuir los recursos de cmputo consumidos. Por ejemplo, si
todos los clculos son en 8 bits, la rutina anterior podra simplificarse a:
y=((x^^0xFF)++)&&0xFF;
Aplicaciones
Su utilidad principal se encuentra en las operaciones matemticas con nmeros binarios.
En particular, la resta de nmeros binarios se facilita enormemente utilizando el
complemento a dos: la resta de dos nmeros binarios puede obtenerse sumando al
minuendo el complemento a dos del sustraendo. Se utiliza porque la unidad aritmtico-
lgica no resta nmeros binarios, suma binarios negativos, por eso esta conversin al
negativo.






Complemento a uno
Complemento a uno Decimal
0111 7
0110 6
0101 5
0100 4
0011 3
0010 2
0001 1
0000 0
1111 0
1110 1
1101 -2
1100 3
1011 4
1010 5
1001 6
1000 7
Complemento a uno con enteros de 4 bits
El complemento a uno de un nmero binario es una operacin matemtica muy importante
en el campo de la computacin, ya que nos permite obtener la representacin binaria de
nmeros negativos. Se obtiene al cambiar cada uno de los dgitos del nmero binario N por
sucomplementario, esto es, cambiar los unos por ceros y los ceros por unos.
Por ejemplo:
Nmero binario =
Complemento a uno =
Podemos referirnos al complemento a uno como la funcin complemento a
uno , que tambin se puede definir como el complemento a dos menos una
unidad, es decir . Es trivial a partir de la definicin anterior, que
el complemento a dos se puede definir como .
Por ejemplo, vamos a calcular el complemento a 1 del nmero que,
expresado en binario tiene 6 dgitos:
; ;


Su complemento a dos es:
y, su complemento a uno es una
unidad menor:
010011
-000001
-------
010010
Existe una desventaja a la hora de utilizar el complemento a uno para representar nmeros
negativos que hace ms adecuado el complemento a dos, y es que existen dos posibles
representaciones para el nmero cero.

S-ar putea să vă placă și