Calculadora de complemento a dos (conversión binaria de enteros con signo)
Convierte un entero decimal con signo a su patrón binario en complemento a dos de 8/16/32/64 bits, o realiza la conversión inversa. Muestra también la interpretación sin signo, la notación hexadecimal y detecta valores fuera de rango.
Qué es el complemento a dos
El complemento a dos es el esquema que usan las computadoras para representar enteros con signo —números que pueden ser positivos o negativos— como simples patrones de bits. Los números positivos se almacenan como binario ordinario, mientras que un número negativo se forma invirtiendo cada bit de su valor absoluto y sumando uno. El bit más significativo (MSB) hace las veces de signo: 1 significa negativo y 0 significa positivo, y el rango representable depende del ancho de bits elegido (8, 16, 32 o 64 bits).
Esta herramienta convierte un entero decimal con signo a su patrón binario en complemento a dos con el ancho de bits que elijas, y también puede convertir en el sentido contrario, de una cadena binaria de vuelta a decimal. Junto al resultado principal muestra la interpretación sin signo de los mismos bits, la notación hexadecimal y una comparación con la representación en signo y magnitud, para que veas de forma concreta cómo un mismo patrón de bits puede significar cosas distintas según cómo se lea.
Cómo usar la calculadora de complemento a dos
- Elige un ancho de bits Selecciona 8, 16, 32 o 64 bits según el tipo entero que quieras comprobar.
- Elige la dirección de conversión Alterna entre "decimal → binario" y "binario → decimal" según lo que necesites convertir.
- Introduce un valor Escribe un entero decimal con signo (por ejemplo, -5) o una cadena binaria (por ejemplo, 11111011).
- Lee el resultado de la conversión Aparecen juntos el valor decimal con y sin signo, el patrón en complemento a dos y la notación hexadecimal.
- Comprueba el aviso de rango o desbordamiento Introduce un valor fuera de lo que admite el ancho de bits para ver exactamente dónde está el límite del desbordamiento.
Consejos para aprovecharla mejor
- Un entero con signo de 8 bits va de -128 a 127. Prueba a introducir 127 y luego 128 para ver el límite del desbordamiento en acción: 128 no cabe y provoca el error de rango, justo donde se produciría el salto a -128.
- La fila "decimal sin signo" lee el mismo patrón de bits sin tratar el bit más significativo como signo. Compararla con la fila con signo hace que la diferencia entre ambas interpretaciones sea inmediatamente visible.
- Una entrada binaria debe tener exactamente tantos dígitos como el ancho de bits seleccionado: 8 dígitos para 8 bits, 16 para 16 bits, y así sucesivamente.
- Los cálculos de 64 bits usan BigInt internamente en lugar del tipo Number de JavaScript, por lo que los valores cercanos a 2^63 se convierten sin pérdida de precisión.
- Esta herramienta también es útil para entender el comportamiento de desbordamiento de enteros en lenguajes como C y Java, donde los tipos int (32 bits) y long (64 bits) dan la vuelta exactamente en estos mismos límites.
Usos prácticos del complemento a dos
Preparar cursos y exámenes de informática
Resuelve a mano los ejercicios de conversión binaria que aparecen en casi todas las asignaturas introductorias de informática y comprueba tus respuestas.
Depurar desbordamientos de enteros en C o sistemas embebidos
Reproduce con el ancho de bits real un valor inesperado de una variable int o uint8_t para localizar exactamente dónde falló.
Entender cómo los registros de la CPU almacenan valores
Cuando un depurador muestra el valor hexadecimal de un registro, comprueba en segundos qué entero con signo representa realmente ese patrón.
Verificar resultados de operaciones a nivel de bits
Antes y después de escribir lógica AND/OR/desplazamiento, confirma a mano que el patrón de bits resultante es el esperado.
Glosario del complemento a dos
- Complemento a dos
- Una forma de representar números negativos invirtiendo cada bit del valor absoluto y sumando uno. Da al cero un único patrón inequívoco y permite que el mismo circuito sumador se use tanto para sumar como para restar, por lo que casi toda CPU moderna lo usa para enteros con signo.
- Bit de signo
- El bit más significativo (MSB) de un patrón de bits. En complemento a dos, un valor de 1 indica que el número es negativo y un 0 que es positivo.
- Desbordamiento (overflow)
- Lo que ocurre cuando un resultado ya no cabe en el ancho de bits disponible. El bit de mayor orden sobrante se descarta, lo que cambia el significado del bit de signo y hace que el valor parezca saltar al extremo opuesto del rango.
- Entero con signo frente a sin signo
- El mismo patrón de bits puede representar dos valores distintos según se trate el bit de signo como marcador de números negativos (con signo) o simplemente como otro bit de valor (sin signo).
- Ancho de bits
- El número de bits usados para almacenar un entero. Los anchos habituales son 8, 16, 32 y 64 bits: cuanto más ancho el tipo, mayor el rango de valores que puede representar.
- Complemento a uno
- Un esquema más antiguo que forma un número negativo invirtiendo simplemente todos los bits del valor positivo, sin sumar 1. Tiene el inconveniente de producir dos patrones distintos para el cero ("+0" y "-0"), un problema que el complemento a dos fue diseñado para eliminar.
Preguntas frecuentes
A propósito — Por qué las computadoras usan el complemento a dos
El complemento a dos no es la única forma de representar números negativos en binario. Históricamente también se usaron la representación de signo y magnitud (usando el bit más significativo solo como indicador de signo) y el complemento a uno (invirtiendo simplemente los bits de un número positivo). Ambas comparten un mismo defecto: terminan con dos patrones de bits distintos para el cero, "+0" y "-0", lo que complica la lógica de comparación y el diseño de circuitos. El complemento a dos evita por completo este "problema de los dos ceros": cada patrón de bits corresponde a un único valor entero.
Una ventaja aún mayor del complemento a dos es que el mismo circuito sumador usado para la suma también puede realizar la resta, ya que restar un número equivale a sumar su complemento a dos. La CPU no necesita saber ni preocuparse de si un valor es positivo o negativo; simplemente suma patrones de bits y obtiene el resultado correcto en ambos casos. Esto permite que la unidad aritmético-lógica (ALU) prescinda por completo de un circuito de resta dedicado, razón por la cual prácticamente todas las arquitecturas de CPU modernas adoptaron el complemento a dos para los enteros con signo.
El desbordamiento de enteros es una consecuencia directa de esta representación. Sumar 1 al máximo con signo de 8 bits, 127 (01111111), simplemente hace que el patrón de bits se convierta en 10000000, que interpretado como valor con signo es -128. En C, el desbordamiento de enteros con signo es técnicamente un comportamiento indefinido, lo que significa que las optimizaciones del compilador pueden producir resultados sorprendentes cerca de este límite, así que merece verdadera precaución en código de producción. Java, en cambio, especifica que el desbordamiento da la vuelta silenciosamente, un ejemplo interesante de cuánto pueden diferir las garantías de comportamiento entre lenguajes aunque la representación de bits subyacente sea idéntica.