Complemento a 2
El complemento a 2 de un número binario se puede obtener usando varios métodos:
PRIMER MÉTODO
Añadimos 1 al complemento a 1 del número buscado.
Por ejemplo:
C_2(1100) = C_1(1100)+1 = 0011+0001 = 0100
SEGUNDO MÉTODO
Recorremos todos los ceros del número dado desde el LSB (bit menos significativo, Least Significative Bit) hacia la izquierda, hasta encontrar el primer uno, dejando los números como están. A partir de ahí, invertimos ceros y unos.
Veamos el ejemplo anterior.
1100: recorremos el número desde el LSB hasta llegar al primer 1. A partir de ahí, invertimos el 1 que nos queda, y nos quedará, como antes, 0100.
TERCER MÉTODO (Fórmula)
Este método consiste en aplicar la definición matemática (tranqui, ¡no te asustes!) de complemento a 2:
C_2 (N) = 2 ^n - N
donde "n" es el número de bits que se utiliza en la representación del número.
Si quieres hacer los cálculos más rápidos, es conveniente que los hagas en decimal y el resultado lo conviertas a binario.
Vamos, como siempre, con un ejemplo: calculemos el complemento a 2 de 10D.
- Primer paso: 10D se representa con cuatro bits, luego n=4 y, por tanto, 2n=16.
- Segundo paso: hacemos 16-10 = 6D.
- Tercer paso: convertimos 6 a binario: 0110, que es la expresión buscada del complemento a 2 de 10.
Luego
C_2 (10) = 0110_{B}
¿Te das cuen?
Al igual que el "complemento a 1", la operación "complemento a 2" cumple la propiedad de involución, es decir, al aplicarla dos veces seguidas a un número obtenemos dicho número.
Matemáticamente, escribiríamos lo siguiente:
C_2(C_2(N)) = N
Tanto lío ¿para qué?
El complemento a 2 se utiliza para representar números negativos en sistema binario.
De la fórmula empleada en el tercer método de obtener el complemento a 2 sacamos una interesante propiedad:
N+C_2(N) = 2^n
Esto quiere decir que si sumamos un número con su complemento a 2, siempre nos saldrá 2n. Pero 2n necesita, para ser representado, 1 bit más que nuestro número. Si desechamos ese "1", la suma dará cero.
Con un ejemplo quizás lo vayamos viendo más claro: consideremos N = 1010B); por tanto, C2(N) = 0110B).
Si hacemos la suma de ambos:
\frac{\begin{matrix} & 1 & 0 & 1 & 0\\ + & 0 & 1 & 1 & 0 \end{matrix}}{\begin{matrix} 1 & 0 & 0 & 0 & 0 \end{matrix}}
Como la representación de ambos números está hecha con cuatro bits, el MSB (el 1 de la izquierda) lo tenemos que descartar, ya que está en la quinta posición. Efectivamente, la suma de ambos da "0". Es por ello que podemos asegurar que el complemento a 2 de un número nos está sirviendo para expresar dicho número con el signo negativo y poder hacer la resta como si fuera una suma.
Más información sobre cómo realizar operaciones en esta página.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0