Qué es el complemento a 2
Es la forma en que prácticamente todos los procesadores guardan los enteros con signo. Con n bits, el bit de mayor peso no vale +2n−1 sino −2n−1; el resto de bits suman como siempre. Así, con 8 bits, 1000 0000 es −128 y 1111 1111 es −128 + 127 = −1.
Su gran ventaja es que sumar y restar funciona con el mismo circuito que para números sin signo: no hay que mirar el signo antes de operar, solo hay un cero y el rango es asimétrico, de −2n−1 a 2n−1 − 1.
Cómo pasar un negativo a complemento a 2
- Escribe el valor absoluto en binario con los n bits.
- Invierte todos los bits (eso es el complemento a 1).
- Suma 1.
Ejemplo · −45 con 8 bits
45 = 0010 1101 → invertido 1101 0010 → +1 = 1101 0011. Comprobación: −128 + 64 + 16 + 2 + 1 = −45.
Atajo para hacerlo de cabeza: recorre los bits de derecha a izquierda, copia todos hasta el primer 1 (incluido) e invierte el resto.
Comparación con otras representaciones
| Representación | Rango con n bits | Ceros | Cómo se niega |
|---|---|---|---|
| Signo-magnitud | −(2n−1−1) … 2n−1−1 | Dos (+0 y −0) | Cambiar el bit de signo |
| Complemento a 1 | −(2n−1−1) … 2n−1−1 | Dos | Invertir todos los bits |
| Complemento a 2 | −2n−1 … 2n−1−1 | Uno | Invertir y sumar 1 |
| Exceso 2n−1 | −2n−1 … 2n−1−1 | Uno | Se guarda valor + 2n−1 |
El exceso (o sesgo) es el que usa el exponente de la coma flotante; lo tienes en el conversor IEEE 754.
Desbordamiento al sumar
Si sumas dos números del mismo signo y el resultado sale con el signo contrario, ha habido desbordamiento (overflow): el resultado real no cabe en n bits. Sumar dos números de distinto signo nunca desborda. El acarreo que sale del último bit no indica error en complemento a 2: simplemente se descarta.
Ejemplo · 100 + 50 con 8 bits
0110 0100 + 0011 0010 = 1001 0110. Ambos operandos son positivos y el resultado empieza por 1: desborda. Leído en Ca2 da −106 en lugar de 150, que se sale del rango −128…127.
Preguntas frecuentes
¿Por qué −128 no tiene positivo correspondiente con 8 bits?
Porque hay 256 combinaciones y una se gasta en el cero. Quedan 255 para repartir: 128 negativas y 127 positivas. Si niegas −128 (1000 0000) invirtiendo y sumando 1, vuelves a obtener 1000 0000.
¿Cómo extiendo un número a más bits?
Con extensión de signo: copia el bit de signo hacia la izquierda. −45 en 8 bits es 1101 0011 y en 16 bits es 1111 1111 1101 0011. Rellenar con ceros cambiaría el valor.
¿Qué diferencia hay entre acarreo (C) y desbordamiento (V)?
C es el acarreo que sale del bit más significativo y es el que importa al operar sin signo. V indica que el resultado con signo no cabe. Una misma suma puede activar uno, otro, ambos o ninguno.
Más herramientas de informática
Calculadora de subredes IPv4
Red, broadcast, hosts, wildcard y reparto VLSM con el AND en binario.
AbrirConversor de bases numéricas
Binario, octal, decimal, hexadecimal y bases 2–36 con divisiones sucesivas.
AbrirConversor IEEE 754
Coma flotante de 32 y 64 bits con exponente sesgado y error de redondeo.
AbrirGenerador de tablas de verdad
Tabla de verdad de cualquier expresión, con minterms y formas canónicas.
AbrirMapas de Karnaugh
Expresión mínima en SOP y POS con los grupos marcados en el mapa.
AbrirVisualizador de algoritmos de ordenación
Seis algoritmos animados, contando comparaciones y escrituras.
Abrir