Complementos: a 1 y 2

El complemento a 1 y a 2 de un número binario permiten la representación de números negativos. El método de complemento a 2 es comúnmente usado por las computadoras para representar los negativos.

Complemento a 1

El complemento a 1 de un número binario se obtiene representándolo primero en SM, es decir el bit más significativo, representa el signo y el resto de los bits la magnitud. Luego se procede de 2 formas distintas dependiendo del signo del valor a representar. El complemento a 1 C(1) de un valor es:

Si el número a representar es positivo: la representación queda igual que en signo magnitud. Por ejemplo si tenemos el número positivo 6(10) y debemos pasarlo a C(1), quedaría asi:

Si el número a representar es negativo: Se efectua el complemento dígito a dígito de la representación de la magnitud obtenida anteriormente. Veamos como representar en C(1) el número -6(10):

Primero lo representamos en SM, como estamos usando 4 bits quedaría así Luego complementamos los bits restantes

El bit mas significativo, nos indica que el número es negativo. -6.

Analicemos otro ejemplo; pero ahora con 8 bits (1 byte), representemos el número -1710 en C1.

Paso 0 ) Como primer paso escribimos el número en SM: Paso 1 ) Como el número a representar es negativo (-17), complemento y queda así:

Ahora supongamos que tenemos un número que está en C1: 0011 ¿Cómo lo pasamos a SM?.

Paso 0) Si el número tiene en su bit más significativo un 0, quiere decir que es positivo, entonces su representacion quedaría exactamente igual.

Probemos otro número que está en C1: 11101100 ¿Cómo lo pasamos a SM o a binario?. ¡Lo volvemos a complementar a C1!

Paso 0) Si el número tiene en su bit más significativo un 0, quiere decir que es positivo, entonces su representacion quedaría exactamente igual. Este no es el caso ya el bit 7 tiene valor 1

Paso 1) Complemento para obtener el valor numérico en SM.

Pensemos ahora, en el rango de representación, dicho de otra forma, ¿Cuál es número más grande y el más chico que puedo representar con n bits?

Partamos de un ejemplo fácil con 4 bits

C1	Decimal
1000	-7
1001	-6
1010	-5
1011	-4
1100	-3
1101	-2
1110	-1
1000	-0
0000	0
0001	1
0010	2
0011	3
0100	4
0101	5
0110	6
0111	7

Vemos que el 0 tiene doble representación, lo cual genera un problema. Veamos el rango de representación, seria así: [ -(24-1-1), 24-1-1) ] –> (-7, 7)

Generalizando para n bits:

[ -(2n-1-1), 2n-1-1) ]

Complemento a 2

En la actualidad la representación más utilizada en las computadoras es complemento a dos. Sin embargo, primero estudiamos las otras representaciones dado que son más simples y sirven como una buena base para el complemento a dos.

Veamos mediante ejemplos como pasar un número binario SM a C2

El complemento a 2 C2 de un número binario se obtiene, primero lo pasamos a C1 luego le sumamos 1, al bit menos significativo.

Si el número a representar es positivo: la representación queda igual que en signo magnitud. Por ejemplo si tenemos el número positivo 6(10) y debemos pasarlo a C(2), quedaría asi:

Si el número a representar es negativo: Se efectua el complemento dígito a dígito de la representación de la magnitud obtenida anteriormente. Veamos como representar en C(2) el número -6(10):

Primero lo representamos en SM, luego en C1 y para convertirlo finalmente a C2, le sumamos 1 al bit menos siginficativo. Como estamos usando 4 bits quedaría así

y ahora sumamos 1

Sigamos con más ejemplos, convirtamos por ejemplo con el número -74(10) a C2 trabajando con 8 bits:

Paso 0) SM: Si el número tiene en su bit más significativo un 0, quiere decir que es positivo, entonces su representacion quedaría exactamente igual. Este no es el caso (11001010 SM) ya el bit 7 tiene valor 1

Paso 1) Convertimos a C1

Paso 2) Convertimos a C2 simplemente sumando 1 al bit menos significativo

Ahora supongamos que tenemos un número que está en C2: 10110110 ¿Cómo lo pasamos a SM?. ¡Lo complementamos a 2!

Paso 0) Analizamos el signo del bit más significativo para saber si es negativo (1). Si no fuera asi la respresentación en C2 quedaría igual

Paso 1) Complementamos C1

Paso 2) Sumamos 1 al bit menos significativo y nos queda el número en signo magnitud

Veamos el rango de representación, ¿Cuál es número más grande y el más chico que puedo representar con n bits?

Ejemplo fácil con 4 bits

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

Ahora vemos que el 0 no presenta el problema de la doble representación de C1 . Veamos el rango de representación, seria así: [ -(24-1), 24-1-1) ] –> (-8, 7)

Generalizando para n bits:

[ -(2n-1), 2n-1-1) ]

Tabla Comparativa (representación en 4 bits)

Volver

— Mariano Vargas

()