Sistemas de numeración · Gratis · Sin registro
Calculadora de complemento a 2 online
Pasa un número decimal a complemento a 2 o un número en complemento a 2 (binario o hexadecimal) a decimal, en 4, 8, 16, 32 o 64 bits. Te enseña cada paso: el bit de signo, la inversión de bits y la suma de 1 con sus acarreos.
Calculadora de complemento a 2
Elige primero qué conversión quieres hacer¿Qué es el complemento a 2?
El complemento a 2 (también llamado complemento a dos o Ca2) es la forma en la que los ordenadores guardan los números enteros negativos. Como la memoria solo tiene ceros y unos, no hay un sitio para poner el signo menos: el truco está en usar el primer bit para indicarlo.
- Si el primer bit es 0, el número es positivo y se escribe igual que en binario normal.
- Si el primer bit es 1, el número es negativo y está escrito en complemento a 2.
Por eso siempre hay que saber cuántos bits tiene el número: el mismo 11101100 vale −20 si es un número de 8 bits con signo, pero 236 si es un número sin signo. Con más bits caben números más grandes:
| Bits (N) | Número más pequeño | Número más grande |
|---|---|---|
| 4 | −23 = −8 | 23 − 1 = 7 |
| 8 | −27 = −128 | 27 − 1 = 127 |
| 16 | −215 = −32768 | 215 − 1 = 32767 |
| 32 | −231 = −2147483648 | 231 − 1 = 2147483647 |
| 64 | −263 = −9223372036854775808 | 263 − 1 = 9223372036854775807 |
El patrón es siempre el mismo: con N bits, el número más pequeño es −2N−1 y el más grande 2N−1 − 1. Por ejemplo, con 8 bits: −27 = −128 y 27 − 1 = 127. El más grande lleva ese «− 1» porque el 0 ocupa uno de los huecos de los positivos, y por eso hay un negativo más que positivos.
Cómo pasar de decimal a complemento a 2
Si el número es positivo, no hay que hacer nada especial: se escribe en binario y se rellena con ceros a la izquierda hasta tener los bits que pidan. Si es negativo, se siguen estos 3 pasos:
Paso 1 · Escribe el número sin el signo en binario
Quita el signo menos y pasa el número a binario. Después rellena con ceros a la izquierda hasta tener exactamente los bits que te pidan (8, 16…). Este paso es importante: si no rellenas antes de invertir, el resultado sale mal.
Paso 2 · Invierte todos los bits
Cambia cada 0 por un 1 y cada 1 por un 0. Lo que obtienes se llama complemento a 1.
Paso 3 · Suma 1
Súmale 1 al resultado, empezando por la derecha. En binario, 1 + 1 = 10: escribes un 0 y te llevas 1 a la columna de la izquierda. Lo que sale es el número en complemento a 2, en binario. Si te lo piden en hexadecimal, agrupa los bits de 4 en 4 (lo explicamos más abajo).
Cómo pasar de complemento a 2 a decimal
Hay dos formas de hacerlo. Las dos sirven siempre, para cualquier número en complemento a 2, y dan el mismo resultado: usa la que te resulte más cómoda.
Forma 1 · Invertir y sumar 1
Es la que hace la calculadora paso a paso. Primero mira el primer bit (el de la izquierda):
- Si es 0, el número es positivo: pásalo a decimal como cualquier binario.
- Si es 1, el número es negativo: invierte todos los bits, súmale 1, pásalo a decimal y ponle el signo menos delante.
Forma 2 · Atajo: el primer bit cuenta en negativo
En binario normal, cada bit vale una potencia de 2. Con 8 bits, de izquierda a derecha: 128, 64, 32, 16, 8, 4, 2 y 1. En complemento a 2 es exactamente igual, salvo el primer bit, que cuenta en negativo: vale −128 en vez de 128. Así que basta con sumar lo que valen los bits que están a 1. Por ejemplo, 11101100:
| Lo que vale | −128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Bit | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
Sumamos lo que valen los bits a 1: −128 + 64 + 32 + 8 + 4 = −20. El mismo resultado que con la forma 1, pero sin invertir nada ni sumar 1.
- Si el primer bit es 0, el −128 no se suma y el número sale positivo, igual que en binario normal.
- Con otro número de bits cambia lo que vale el primero: con 4 bits vale −8, con 16 bits −32768… En general, con N bits vale −2N−1, que es justo el número más pequeño de la tabla de rangos de arriba.
Ejemplo resuelto: −20 en complemento a 2 con 8 bits
- Sin el signo, en binario y con 8 bits: 20 = 16 + 4 →
0001 0100 - Invertimos todos los bits:
0001 0100→1110 1011 - Sumamos 1: el último bit es 1, así que 1 + 1 = 10: escribimos 0 y nos llevamos 1. En la siguiente columna, 1 + 1 = 10 otra vez: 0 y nos llevamos 1. En la tercera, 0 + 1 = 1 y ya no hay acarreo. El resto se queda igual.
1110 1011 + 1 = 1110 1100
Resultado: −20 en complemento a 2 con 8 bits es 1110 1100 (en hexadecimal, EC).
Comprobación con el atajo: −128 + 64 + 32 + 8 + 4 = −20 ✓
Ejemplo de complemento a 2 a decimal: 10110101
- Miramos el primer bit: es un 1, así que el número es negativo.
- Invertimos todos los bits:
1011 0101→0100 1010 - Sumamos 1: el último bit es 0, así que 0 + 1 = 1, sin acarreo:
0100 1011 - Pasamos a decimal y ponemos el menos: 64 + 8 + 2 + 1 = 75 → −75
Comprobación con el atajo: −128 + 32 + 16 + 4 + 1 = −75 ✓. Puedes comprobar los dos ejemplos en la calculadora.
Complemento a 2 en hexadecimal
El complemento a 2 da como resultado una ristra de bits, así que lo normal es darlo en binario. El problema es que con 16, 32 o 64 bits sale larguísimo, y por eso en programación y en los depuradores se escribe en hexadecimal. No es otro resultado distinto: son los mismos bits escritos de forma más corta, porque cada cifra hexadecimal equivale a 4 bits. Por eso la calculadora te da los dos.
Para pasarlo, agrupa los bits de 4 en 4 empezando por la derecha y cambia cada grupo por su cifra hexadecimal. Por ejemplo, −20 en 8 bits:
1110 1100 → 1110 = E y 1100 = C → ECCómo saber si un número hexadecimal es negativo
Mira la primera cifra: si va de 8 a F, su primer bit es 1, así que en complemento a 2 el número es negativo. Si va de 0 a 7, es positivo.
Ojo, porque el mismo número hexadecimal puede valer dos cosas según cómo lo leas. Sin signo (como un número normal) siempre es positivo. En complemento a 2, los que empiezan por 8–F son negativos. Algunos ejemplos:
| En hex | Bits | Leído sin signo | Leído en complemento a 2 |
|---|---|---|---|
| 7F | 8 | 127 | 127 (empieza por 7: positivo) |
| EC | 8 | 236 | −20 |
| FF | 8 | 255 | −1 |
| FD44 | 16 | 64836 | −700 |
| FFFFFFFF | 32 | 4294967295 | −1 |
Si tu número no tiene signo, usa la calculadora de hexadecimal a decimal. Si puede ser negativo, elige «Complemento a 2 → Decimal» y «Hexadecimal» en la calculadora de arriba.
Errores típicos con el complemento a 2
- No rellenar con ceros antes de invertir. Si inviertes
10100en vez de00010100, los ceros de la izquierda no se convierten en unos y el número sale positivo. - Olvidar el acarreo al sumar 1. Si el último bit es 1, no basta con cambiarlo: 1 + 1 = 10, así que se pone 0 y se lleva 1 a la izquierda, tantas veces como haga falta.
- Usar pocos bits. Si el número no cabe en el rango (por ejemplo, −200 en 8 bits), no se puede representar: hacen falta más bits.
- Confundirlo con el complemento a 1. El complemento a 1 es solo invertir los bits. El complemento a 2 es invertir y además sumar 1.
Preguntas frecuentes
¿Qué diferencia hay entre complemento a 1 y complemento a 2?
En complemento a 1, un número negativo se obtiene solo invirtiendo los bits. En complemento a 2 se invierten y además se suma 1. El complemento a 2 es el que usan los ordenadores porque tiene un único 0 (el complemento a 1 tiene un +0 y un −0) y permite sumar y restar con el mismo circuito.
¿Por qué hay un número negativo más que positivos?
Con N bits hay 2N combinaciones. La mitad empieza por 1 (negativos) y la otra mitad por 0, pero entre estas últimas está el 0. Por eso en 8 bits se llega hasta −128 por abajo y solo hasta 127 por arriba.
¿Cuántos bits tengo que usar?
Los que diga el enunciado. Si no lo dice, usa los mínimos para que el número quepa en el rango: por ejemplo, −20 cabe en 8 bits (de −128 a 127), pero −200 necesita 16. La calculadora lo hace sola si dejas «Automático». Ojo: no da igual cuántos bits uses, porque un número negativo se rellena con unos por la izquierda, no con ceros. Por ejemplo, −20 es 1110 1100 en 8 bits y 1111 1111 1110 1100 en 16.
¿Cómo sé si un número en complemento a 2 es negativo?
Mirando el primer bit por la izquierda: si es 1, es negativo; si es 0, es positivo o cero. En hexadecimal, es negativo si la primera cifra va de 8 a F.
¿Cuánto es 11111111 en complemento a 2?
En 8 bits, 11111111 es −1: al invertir sale 00000000 y al sumar 1 sale 00000001, que es 1, así que el número es −1. En cualquier número de bits, todo unos significa −1.