Conversor Hexadecimal
Convierte entre hexadecimal, decimal y binario al instante
Elige la base de origen y destino arriba y escribe un valor para convertir.
Procesando…
0.0
No se ha bloqueado: el resultado aparecerá cuando termine el cálculo.
Acerca de Conversor Hexadecimal
Escribe un valor en hexadecimal, decimal o binario y la herramienta muestra los otros dos. Por dentro usa BigInt de JavaScript, así que no hay límite de dígitos: un hash de 64 bits o un UUID de 128 bits escrito como un solo número se convierte sin que se redondeen las últimas cifras.
Con el ancho en bits por defecto (Sin límite) los valores son sin signo, así que FF vale 255. Sin embargo, en un depurador o en un volcado de memoria, FF suele significar -1. Elige un ancho de 8, 16, 32 o 64 bits y activa «Con signo (complemento a dos)»: FF se lee como -1 y el campo decimal acepta negativos como -5. Aquí se explica por qué el mismo patrón de bits puede ser ambas cosas. Las fracciones no se aceptan en ningún modo.
Por qué 0xFF puede ser -1: complemento a dos
La memoria no guarda el signo por separado. Una celda de 8 bits contiene 11111111 y nada más; leída como byte sin signo (uint8) vale 255, leída como byte con signo (int8) vale -1. Casi todos los procesadores actuales representan los enteros con signo en complemento a dos, y la regla es corta: en un valor de n bits, si el bit más alto es 1, el valor real es el valor sin signo menos 2^n.
Con 8 bits, 0xFF = 255 - 256 = -1, 0x80 = 128 - 256 = -128 y 0x7F = 127. Por eso int8 va de -128 a 127, con un valor más en el lado negativo. En sentido contrario, para escribir -5 como hexadecimal de 8 bits, elige 8 bits, activa el modo con signo e introduce -5 en decimal (en modo sin signo, 256 - 5 = 251 da lo mismo): obtienes FB, o 11111011 en binario.
El complemento a dos se impuso porque un único circuito sumador resuelve también la resta. Suma 00000001 a 11111111 (-1) y obtienes 1_00000000; el acarreo se sale de la celda de 8 bits y queda 0. Los sistemas de signo y magnitud o de complemento a uno acaban con un +0 y un -0; el complemento a dos tiene un solo cero.
Sin el ancho en bits no se puede leer el signo
Que FF sea -1 depende por completo del tamaño del campo donde estaba. En un campo de 16 bits, 0x00FF es simplemente 255, y -1 es 0xFFFF. En 32 bits es 0xFFFFFFFF; en 64 bits, dieciséis F. Lo que cuenta no es cuántas F ves, sino si el bit más alto del ancho completo está activado.
Con el ancho en «Sin límite» la herramienta elimina los ceros a la izquierda, así que 0x00FF devuelve FF. Si eliges un ancho, el resultado se rellena con ceros hasta él (FF pasa a 00FF en 16 bits) y los valores que no caben se marcan como fuera de rango.
- 8 bits (byte): 00 a FF; con signo, -128 a 127
- 16 bits (short): 0000 a FFFF; con signo, -32.768 a 32.767
- 32 bits (int): máximo con signo 0x7FFFFFFF = 2.147.483.647
- 64 bits (long): máximo con signo 0x7FFFFFFFFFFFFFFF = 9.223.372.036.854.775.807
Por qué se usa el hexadecimal
Como 16 = 2^4, cada dígito hexadecimal corresponde exactamente a cuatro dígitos binarios (un nibble). Un byte siempre son dos dígitos hex, y puedes convertir de cabeza separando el binario en grupos de cuatro. El decimal no tiene esa alineación. Por eso los colores (#RRGGBB), las direcciones MAC, las direcciones de memoria y los bytes UTF-8 se escriben en hex.
Se aceptan el prefijo 0x de los lenguajes tipo C y el 0b para binario. Los espacios se ignoran, así que puedes pegar un valor separado por bytes como DE AD BE EF. No distingue mayúsculas; el hex de salida va en mayúsculas.
Errores frecuentes al copiar hex de otras herramientas
Orden de bytes. En x86 y ARM un volcado de un entero de 32 bits suele mostrar los bytes en little-endian: el valor 0x12345678 aparece como 78 56 34 12. Si pegas los bytes en ese orden obtendrás 0x78563412 = 2018915346 en lugar de 305419896. Invierte primero el orden.
Extensión de signo. Cuando un byte con signo como 0xFB (-5) se amplía a 32 bits, el procesador copia el bit alto en todas las posiciones nuevas y resulta 0xFFFFFFFB, no 0x000000FB. Una fila de F al principio de un registro suele indicar un número negativo pequeño con signo extendido.
Ejemplos
Leer FB de un volcado como byte con signo
- Entrada
Hex FB- Resultado
Decimal 251, binario 11111011
El bit alto es 1, así que como int8 vale 251 - 256 = -5. Como uint8 sigue siendo 251.
Mayor entero con signo de 32 bits
- Entrada
Decimal 2147483647- Resultado
Hex 7FFFFFFF, binario con 31 unos
Súmale uno y obtienes 80000000, que int32 lee como -2.147.483.648: el desbordamiento pasa a negativo.
Bytes separados por espacios
- Entrada
Hex DE AD BE EF- Resultado
Decimal 3735928559
Los espacios se ignoran. Como int32 con signo se lee 3735928559 - 4294967296 = -559038737.
Cómo se usa
- Elige el campo de la base que tienes: hex, decimal o binario.
- Escribe el valor; los prefijos 0x/0b y los espacios no molestan. Para leerlo como entero con signo, elige un ancho en bits y activa el modo con signo.
- Lee o copia las otras dos representaciones.
Preguntas frecuentes
¿Puedo introducir un número negativo?
Sí, si eliges un ancho en bits (8, 16, 32 o 64) y activas «Con signo (complemento a dos)». En 16 bits, -1 da FFFF; un valor que no cabe, como -129 en 8 bits, se marca como fuera de rango. Los valores de 64 bits son exactos porque el cálculo usa BigInt.
¿Es exacta con números muy grandes?
Sí. BigInt no tiene límite de dígitos; los números normales de JavaScript pierden precisión por encima de 2^53, pero eso no aplica aquí.
¿Convierte fracciones como 0,5?
No. Los valores de coma flotante se guardan en formato IEEE 754, cuyo patrón de bits no es una simple conversión de base.
¿Por qué desaparecieron los ceros iniciales?
Con el ancho en «Sin límite», el resultado muestra el valor, no un campo de ancho fijo. Elige un ancho en bits y el hexadecimal y el binario se rellenan con ceros hasta él.
Fuentes
Revisado el: