El sistema numérico hexadecimal, a menudo abreviado como "hex", es un sistema numérico formado por 16 símbolos (base 16). El sistema numérico estándar se llama decimal (base 10) y utiliza diez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. El hexadecimal añade seis símbolos adicionales: las letras A, B, C, D, E y F del alfabeto inglés, que representan los valores decimales 10, 11, 12, 13, 14 y 15 respectivamente (por ejemplo, hexadecimal A = decimal 10 y hexadecimal F = decimal 15).
Por qué se usa el hexadecimal
Los humanos usan habitualmente el sistema decimal (base 10), probablemente porque tenemos diez dedos. Los ordenadores, en cambio, funcionan internamente con el sistema binario (base 2). Un solo bit sólo puede ser 0 o 1; por eso las cadenas binarias para representar números o datos suelen ser largas y difíciles de leer. El hexadecimal resulta práctico porque agrupa cuatro bits en un solo dígito hex: cada dígito hex representa exactamente un nibble (4 bits). Así, por ejemplo, el byte de ocho bits 11011011 puede escribirse en hexadecimal como DB, que es mucho más fácil de leer y recordar.
Relación entre binario, decimal y hexadecimal
Regla general: cada posición en hexadecimal es una potencia de 16 (16^0, 16^1, 16^2, ...). Para convertir un número hexadecimal a decimal, multiplica cada dígito por la potencia de 16 correspondiente y suma los resultados.
Ejemplo: convertir hexadecimal DB a decimal:
- D = 13 → 13 × 16^1 = 13 × 16 = 208
- B = 11 → 11 × 16^0 = 11 × 1 = 11
- Total = 208 + 11 = 219 (decimal)
Conversión inversa (decimal 219 → hexadecimal): divide por 16 y toma los restos.
- 219 ÷ 16 = 13, resto 11 → 13 = D, resto 11 = B → resultado DB
Conversión desde binario (ejemplo con 11011011): agrupa los bits en nibbles de derecha a izquierda: 1101 1011 → 1101 = 13 = D; 1011 = 11 = B → DB.
Notación y convenciones
Para evitar confusiones con otros sistemas numéricos existen varias notaciones comunes:
- 0x prefijo: usado en C, C++, Java, Python, etc. (por ejemplo, 0x63).
- h sufijo: frecuente en ensamblador Intel (por ejemplo, 63h).
- $ prefijo: usado en Pascal y algunos ensambladores (por ejemplo, $FF).
- &H prefijo: usado en Visual Basic (por ejemplo, &HFF).
Las letras A–F no distinguen entre mayúsculas y minúsculas en la mayoría de contextos (por ejemplo, ff y FF son equivalentes). En la práctica muchas guías de estilo recomiendan usar mayúsculas para mayor legibilidad.
Usos prácticos del hexadecimal
- Representación compacta de bytes y direcciones de memoria: cada byte (8 bits) equivale a dos dígitos hexadecimales. La memoria del ordenador se organiza en bytes y los programadores suelen mostrar su contenido en hexadecimal; por ejemplo, la cadena de bytes 0x41 0x42 0x43 representa los caracteres ASCII "ABC". bytes
- Códigos de color en web: los colores CSS/HTML usan notación hexadecimal #RRGGBB (por ejemplo, #FF0000 para rojo).
- Representación de valores en criptografía, sumas de comprobación (hashes), identificadores (GUID), y volcado de memoria (hex dump).
- Lectura y depuración de instrucciones máquina y ensamblador; en la la jerga informática se usa mucho el hex para mostrar instrucciones, offsets y máscaras.
Consejos rápidos y herramientas
- Para convertir rápidamente en programación: en Python usa int("FF", 16) → 255 y hex(255) → '0xff'.
- La mayoría de calculadoras científicas y herramientas online convierten entre bases.
- Agrupa bits de a cuatro (nibbles) desde la derecha para pasar fácilmente de binario a hex.
Ejemplos adicionales
- Decimal 255 → hexadecimal: 255 ÷ 16 = 15 resto 15 → 15 = F, resultado FF.
- Decimal 16 → hexadecimal: 16 = 1×16^1 + 0×16^0 → 10 (hex).
- Hexadecimal 1F → decimal: 1×16 + 15 = 31.
- Valor ASCII: 0x41 → decimal 65 → carácter 'A'.
En resumen, el sistema hexadecimal es una forma muy conveniente y compacta de representar información binaria en términos comprensibles para los humanos. Facilita la lectura, el análisis y la manipulación de datos en programación, electrónica y redes.