Hexadecimal Calculator
Suma, resta y convierte números hexadecimales. Realiza aritmética hexadecimal y convierte a decimal o binario. Calculadora matemática gratis con resultados instantáneos.
Comprensión del Hexadecimal (Base-16): Fundamentos
El hexadecimal (hex) es un sistema numérico posicional con base 16. Utiliza dieciséis símbolos distintos: los dígitos 0–9 representan valores cero hasta nueve, y las letras A–F (o a–f) representan valores diez hasta quince. Un dígito hexadecimal representa exactamente cuatro bits binarios (una "nibble"), lo que hace que el hexadecimal sea la forma más natural para representar datos binarios en un formato legible por humanos.
El valor posicional de cada dígito hex es una potencia de 16. Para el número hex 2F4:
- 2 está en la posición 16² (256): 2 × 256 = 512
- F (15) está en la posición 16¹ (16): 15 × 16 = 240
- 4 está en la posición 16⁰ (1): 4 × 1 = 4
- Total: 512 + 240 + 4 = 756 decimal
Convertir decimal a hex: divida repetidamente por 16 y registre los restos (el dígito más a la derecha primero). 756 ÷ 16 = 47 R 4; 47 ÷ 16 = 2 R 15 (F); 2 ÷ 16 = 0 R 2. Lea los restos hacia arriba: 2F4₁₆ ✓. En la mayoría de los lenguajes de programación, los literales hexadecimales están precedidos por 0x: 0x2F4 = 756.
Hex a Decimal Conversión de Tabla
Referencia rápida para convertir dígitos hexadecimales individuales y valores hexadecimales comunes a decimal:
| Hex | Decimal | Binario | Significado Común |
|---|---|---|---|
| 0x00 | 0 | 0000 0000 | Cero byte, falso, apagado |
| 0x01 | 1 | 0000 0001 | Verdadero, habilitado |
| 0x0A | 10 | 0000 1010 | Caracter de nueva línea (LF) |
| 0x0D | 13 | 0000 1101 | Retorno de carro (CR) |
| 0x1F | 31 | 0001 1111 | Separa unidad |
| 0x20 | 32 | 0010 0000 | Caracter de espacio (ASCII) |
| 0x41 | 65 | 0100 0001 | 'A' en ASCII |
| 0x61 | 97 | 0110 0001 | 'a' en ASCII (minúscula) |
| 0x7F | 127 | 0111 1111 | Caracter DEL; máximo par de nibbles signados |
| 0x80 | 128 | 1000 0000 | Bit de signo establecido (negativo en byte signado) |
| 0xFF | 255 | 1111 1111 | Máximo valor sin signo de byte; todos los bits establecidos |
| 0x100 | 256 | 1 0000 0000 | Uno más que el máximo byte |
| 0xFFFF | 65,535 | 16 unos | Máximo valor sin signo de 16 bits |
| 0xFFFFFF | 16,777,215 | 24 unos | Máximo de 24 bits (16M de colores) |
La relación entre hexadecimales y binarios es directa: cada dígito hexadecimal se corresponde exactamente con 4 bits. A = 1010, B = 1011, C = 1100, D = 1101, E = 1110, F = 1111. Convertir 0xAB a binario: A=1010, B=1011 → 10101011₂ = 171₁₀.
Aritmética Hexadecimal: Adición, Sustracción, Multiplicación
La aritmética hexadecimal sigue las mismas reglas que la aritmética decimal, pero lleva y coge a 16 en lugar de 10. Entender la aritmética hexadecimal es esencial para el programado en ensamblador, sistemas embebidos y la lectura de la salida del compilador.
Ejemplo de adición: 3A + 27. Unidades: A + 7 = 10 + 7 = 17 = 1×16 + 1 → escribe 1, lleva 1. Decenas: 3 + 2 + 1 (lleva) = 6. Resultado: 61₁₆ = 97₁₀. Verifica: 58 + 39 = 97 ✓.
Ejemplo de sustracción: C3 − 5F. Unidades: 3 < F (15), así que coge: 3 + 16 − 15 = 4, y lleva 1 a la siguiente columna. Decenas: C (12) − 5 − 1 (coge) = 6. Resultado: 64₁₆ = 100₁₀. Verifica: 195 − 95 = 100 ✓.
Ejemplo de multiplicación: 1A × 3. A × 3 = 30 = 1E₁₆ (escribe E, lleva 1). 1 × 3 + 1 = 4. Resultado: 4E₁₆ = 78₁₀. Verifica: 26 × 3 = 78 ✓.
Para cálculos hexadecimales complejos, convertir a decimal, calcular y convertir de vuelta a menudo es más confiable a menos que estés profundamente practicado. Sin embargo, entender la aritmética hexadecimal construye intuición para el diseño de memoria, registros de CPU y representación de datos.
Hex en el Diseño Web: Códigos de Color
Los códigos de color en HTML y CSS son una de las aplicaciones más visibles de hexadecimal fuera del desarrollo de software. Los colores se expresan como #RRGGBB donde cada canal va de 00 (0 intensidad) a FF (255 = intensidad completa). Esto da 256³ = 16,777,216 posibles colores.
| Código Hex | Rojo | Verde | Azul | Nombre del Color |
|---|---|---|---|---|
| #FF0000 | 255 | 0 | 0 | Rojo puro |
| #00FF00 | 0 | 255 | 0 | Verde puro (limón) |
| #0000FF | 0 | 0 | 255 | Azul puro |
| #FFFF00 | 255 | 255 | 0 | Amarillo |
| #FF00FF | 255 | 0 | 255 | Magenta |
| #00FFFF | 0 | 255 | 255 | Cian |
| #FFFFFF | 255 | 255 | 255 | Blanco |
| #000000 | 0 | 0 | 0 | Negro |
| #808080 | 128 | 128 | 128 | Negro medio |
| #FF5733 | 255 | 87 | 51 | Amarillo-orange puro |
El CSS también soporta los códigos hexadecimales de 4 dígitos (#RGBA) y 8 dígitos (#RRGGBBAA) donde AA es el canal alfa (00 = transparente, FF = opaco). Los colores de forma corta (#RGB) se expanden repitiendo cada dígito: #F3A = #FF33AA.
Los diseñadores web a menudo ajustan los colores modificando los valores hexadecimales. Sumar a la canal rojo hace que los colores sean más cálidos; restarlos los hace más fríos. Los colores hexadecimales con valores iguales de R, G y B siempre producen tonos de gris. Un color como #7F7F7F es exactamente gris del 50% (127 de 255 en cada canal).
Hex en el Programado: Direcciones de Memoria y Manipulación de Bits
En el programado de sistemas, el hex es el idioma natural para direcciones de memoria, banderas de bits y registros de hardware. Cada programador que trabaja en C, C++, ensamblador o sistemas embebidos encuentra constantemente hex.
Direcciones de memoria: En un sistema de 32 bits, las direcciones van desde 0x00000000 a 0xFFFFFFFF (4 GB). Rango común de direcciones: 0x00000000–0x00FFFFFF (memoria baja), 0x7FFFFFFF (máximo entero positivo de 32 bits), 0x80000000 (inicio del espacio negativo en interpretación como signado), 0xFFFFFFFF (máximo entero no signado de 32 bits). En sistemas de 64 bits, el espacio de usuario típicamente ocupa 0x0000000000000000–0x00007FFFFFFFFFFF.
Manipulación de bits con máscaras hex: Las operaciones bit a bit se expresan naturalmente en hex porque coinciden con las fronteras de los nibbles.
| Operación | Expresión | Efecto |
|---|---|---|
| Establecer bit 3 | x |= 0x08 | Forzar bit 3 a 1, dejar los demás sin cambio |
| Limpiar bit 3 | x &= ~0x08 | Forzar bit 3 a 0, dejar los demás sin cambio |
| Alternar bit 3 | x ^= 0x08 | Invertir bit 3, dejar los demás sin cambio |
| Comprobar bit 3 | (x & 0x08) != 0 | Probar si bit 3 está establecido |
| Extraer nibble bajo | x & 0x0F | Obtener los 4 bits inferiores |
| Extraer nibble alto | (x >> 4) & 0x0F | Obtener los 4 bits superiores del byte |
Constantes hex famosas: Los programadores han creado constantes memorables para depuración e inicialización: 0xDEADBEEF (usado para marcar memoria no inicializada en sistemas antiguos de IBM), 0xCAFEBABE (número mágico de archivo de clase Java), 0xFEEDFACE (número mágico de formato binario Mach-O), 0x0BADF00D (sentinelas para depuración de memoria), 0xDEADC0DE (usado en la detección de caídas en iOS). Estas constantes aparecen de manera ambigua en volcados hexadecimales, lo que las hace fáciles de identificar durante la depuración.
Signaturas de Formatos de Archivos y Forensia Hexadecimal
Cada formato de archivo tiene una secuencia característica de bytes en su inicio llamada "número mágico" o firma de archivo. Los editores hexadecimales y las herramientas de forensia digital utilizan estas firmas para identificar los tipos de archivo sin importar la extensión del archivo. Conocer las firmas de archivo es esencial para la recuperación de datos, el análisis de malware y la forensia digital.
| Tipo de Archivo | Símbolo Hexadecimal (primeros bytes) | Representación ASCII |
|---|---|---|
| Imagen JPEG | FF D8 FF | ÿØÿ |
| Imagen PNG | 89 50 4E 47 0D 0A 1A 0A | .PNG.... |
| Documento PDF | 25 50 44 46 | |
| Archievo ZIP | 50 4B 03 04 | PK.. |
| Imagen GIF | 47 49 46 38 | GIF8 |
| Ejecutable ELF (Linux) | 7F 45 4C 46 | .ELF |
| Ejecutable PE (Windows) | 4D 5A | MZ |
| Audio MP3 | FF FB o 49 44 33 | ÿû o ID3 |
| Base de Datos SQLite | 53 51 4C 69 74 65 | SQLite |
Los profesionales de la seguridad utilizan el hexadecimal para examinar archivos binarios sin confiar en la extensión del archivo. Un archivo llamado "document.pdf" que comienza con 4D 5A es en realidad un ejecutable de Windows — una técnica común de malware. El análisis hexadecimal de paquetes de red revela estructuras de protocolo, encabezados de cifrado y posibles exploits.
Comparación de Bases Numéricas: Decimal, Binario, Octal, Hexadecimal
Los computadores usan diferentes bases numéricas para diferentes propósitos. Entender cómo se relacionan ayuda a leer documentación técnica, depurar y programar sistemas.
| Decimal | Binario (base 2) | Hexadecimal (base 16) | |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 0001 0000 | 20 | 10 |
| 64 | 0100 0000 | 100 | 40 |
| 128 | 1000 0000 | 200 | 80 |
| 255 | 1111 1111 | 377 | FF |
| 256 | 1 0000 0000 | 400 | 100 |
| 1024 | 100 0000 0000 | 2000 | 400 |
El octal (base 8) era una vez común en la informática (aparece en los permisos de archivos de Unix: chmod 755 = 111 101 101 en binario = rwxr-xr-x). El hexadecimal reemplazó al octal para la mayoría de las aplicaciones porque 4 bits por dígito (hexadecimal) se alinean mejor con las arquitecturas modernas de 8 bits, 16 bits, 32 bits y 64 bits que 3 bits por dígito (octal).
Preguntas Frecuentes
Cómo convierto rápidamente entre hexadecimales y binarios?
Cada dígito hexadecimales corresponde exactamente a 4 bits binarios: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000, 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111. Para convertir 0xB7: B=1011, 7=0111 → 10110111₂. Para convertir 11001010₂: divide en nibbles: 1100=C, 1010=A → 0xCA.
¿Por qué los colores CSS usan hexadecimal?
CSS usa hex porque cada canal RGB (0-255) encaja perfectamente en exactamente 2 dígitos hexadecimales (00-FF). El formato #RRGGBB es compacto, inambiguo y se corresponde directamente con el modelo de color de 24 bits utilizado por el hardware de visualización. HTML adoptó los colores hexadecimales en la temprana década de 1990 a partir de las definiciones X11 de color, y la convención ha permanecido estándar desde entonces.
¿Qué valor decimal tiene 0xFF?
0xFF = 15×16 + 15 = 240 + 15 = 255. En binario, FF = 1111 1111, lo que significa que todos los 8 bits están establecidos. 255 es el valor máximo de un byte sin signo (uint8), el valor máximo de intensidad para cada canal RGB, y aparece constantemente en la red (255.255.255.255 es la dirección de transmisión) y en la computación.
¿Cuál es la diferencia entre 0x1F y 0xF1?
Estos son números diferentes con los mismos dígitos en diferentes órdenes. 0x1F = 1×16 + 15 = 31 decimal. 0xF1 = 15×16 + 1 = 241 decimal. En binario: 0x1F = 0001 1111; 0xF1 = 1111 0001. El valor posicional importa, de la misma manera que 19 ≠ 91 en decimal.
¿Cuántos dígitos hexadecimales necesito para representar un número de 32 bits?
Exactamente 8 dígitos hexadecimales (ya que 16⁸ = 2³², cubriendo todos los valores de 32 bits desde 0x00000000 hasta 0xFFFFFFFF). Las direcciones de memoria en sistemas de 32 bits se muestran como números hexadecimales de 8 dígitos. Para números de 64 bits, necesitas 16 dígitos hexadecimales (0x0000000000000000 a 0xFFFFFFFFFFFFFFFF).
¿Qué significa el prefijo "0x" en números hexadecimales?
El prefijo "0x" es una convención de notación utilizada en C y la mayoría de los lenguajes de programación para indicar que el número siguiente es hexadecimal. "0x" significa "hex" (el 'x' sugiere hexadecimal). Notaciones alternativas: traza 'h' en ensamblador (FFh), traza '#' en CSS y algunos contextos (#FF0000), y el prefijo $ en algunos lenguajes más antiguos ($FF).
¿Cómo se utiliza el hexadecimales en direcciones IP?
Las direcciones IPv4 (por ejemplo, 192.168.1.1) pueden expresarse en hexadecimales: cada octeto en hexadecimales. 192.168.1.1 = 0xC0 0xA8 0x01 0x01 = 0xC0A80101. Las direcciones IPv6 se escriben ya en hexadecimales: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Esto hace que la manipulación de direcciones IPv6 sea mucho más fácil con aritmética hexadecimales.
¿Qué es un editor hexa y cuándo lo usaría?
Un editor hexa muestra y edita archivos como bytes en hexadecimal. Usos comunes: examinar firmas de formato de archivo para identificar tipos de archivo, editar archivos de guardado binarios de juegos, desensamblar software, analizar capturas de red, recuperar datos de archivos dañados y forensia digital. Editores hexa populares incluyen HxD (Windows), hex fiend (Mac) y xxd (herramienta de línea de comandos Unix).
¿Por qué se utiliza hexadecimal en lugar de decimal en la computación?
Porque los computadores operan en binario (base 2), y 16 = 2⁴ — el hexadecimal se alinea perfectamente con el binario. Un dígito hexadecimales = 4 bits, dos dígitos hexadecimales = 1 byte (8 bits), cuatro dígitos hexadecimales = 16 bits, ocho dígitos hexadecimales = 32 bits. Decimal no tiene tal correspondencia limpia con potencias de 2, lo que hace que el hexadecimal sea mucho más natural para expresar datos binarios de manera compacta.
¿Cómo convierto un color hexadecimal a valores RGB?
Divide el color hexadecimal de 6 dígitos en tres grupos de 2 dígitos: #RRGGBB. Convierte cada uno de ellos a decimal. Ejemplo: #4A90E2 → R=0x4A=74, G=0x90=144, B=0xE2=226. Así que este color es rgb(74, 144, 226) — un azul mediano. Para revertir: convierte cada valor decimal a 2 dígitos hexadecimales y concatena: rgb(255, 87, 51) → #FF5733.
Hexadecimal en Redes y Protocolos
La informática de redes utiliza extensivamente el hexadecimal. Las direcciones MAC —los identificadores de hardware para las interfaces de red— se escriben como 6 bytes hexadecimales separados por puntos o guiones: por ejemplo, 00:1A:2B:3C:4D:5E. Las primeras tres bytes (00:1A:2B) identifican al fabricante (Identificador Único Organizativo, OUI), mientras que las últimas tres (3C:4D:5E) identifican al dispositivo específico.
Las direcciones IPv6 son 128 bits expresados como 8 grupos de 4 dígitos hexadecimales: 2001:0DB8:AC10:FE01:0000:0000:0000:0000. Los ceros iniciales dentro de los grupos pueden omitirse y las secuencias de ceros consecutivos pueden comprimirse con "::", dando 2001:DB8:AC10:FE01::. Entender el hexadecimal es esencial para leer direcciones IPv6, máscaras de subred y tablas de ruteo.
Los marcos Ethernet, paquetes IP, segmentos TCP —todos tienen campos expresados en hexadecimal en herramientas de análisis de red como Wireshark. Un paquete TCP SYN muestra el campo de banderas como 0x002 (solamente el bit SYN establecido); un SYN-ACK muestra 0x012 (los bits SYN y ACK establecidos). Leer estos valores hexadecimales directamente desde las capturas de paquetes es una habilidad fundamental para la resolución de problemas de red.
Unicode y Hex: Codificación de Caracteres
Unicode, el estándar universal de codificación de caracteres, asigna a cada carácter un punto de código expresado en hex. La Plana Básica Multilingüe abarca U+0000 a U+FFFF. Ejemplos:
| Carácter | Punto de Código Unicode | codificación UTF-8 (hex) | Descripción |
|---|---|---|---|
| A | U+0041 | 41 | Letra mayúscula latina A |
| α | U+03B1 | CE B1 | Letra minúscula griega alpha |
| € | U+20AC | E2 82 AC | Símbolo de euro |
| 中 | U+4E2D | E4 B8 AD | Carácter chino "medio" |
| 😀 | U+1F600 | F0 9F 98 80 | Rostro sonriente emoji |
| © | U+00A9 | C2 A9 | Símbolo de copyright |
UTF-8 codifica los caracteres ASCII (U+0000 a U+007F) en 1 byte igual al valor ASCII. Los caracteres U+0080 a U+07FF usan 2 bytes, U+0800 a U+FFFF usan 3 bytes, y los caracteres más allá de U+FFFF (como la mayoría de los emojis) usan 4 bytes. Esta codificación de longitud variable, representada en hex, es por qué entender hex ayuda cuando se depuran problemas de codificación de texto en aplicaciones web.