Guía del sistema hexadecimal
Hexadecimal System
The hexadecimal system uses 16 symbols: 0-9 and A-F (A=10, B=11, C=12, D=13, E=14, F=15). It's a shorthand for binary - each 4 bits is one hex digit. Example: 11111111₂ = FF₁₆ = 255₁₀. Used in programming and colors.
Por qué importa el hexadecimal
255 en binario es 11111111 (8 dígitos). En hexadecimal, FF (2 caracteres): más fácil de leer y escribir. Las direcciones de memoria, los colores RGB y los puntos de código Unicode usan hexadecimal. Definiciones de color en CSS: #FF0000 (rojo), #00FF00 (verde), #0000FF (azul).
Aplicaciones prácticas
En colores CSS: #3498db azul, #2ecc342 verde. En UUID v5: 550e8400-ea29-41d3-af15-6528adf68cc2. Volcados de ROM/EEPROM en hex. Direcciones MAC: aa:bb:cc:dd:ee:ff. En depuradores, direcciones de memoria como 0x0040A7C0.
#888 no es #808080, y la forma corta de CSS alcanza el 0,02% de los colores
El hexadecimal es binario compacto: un dígito son exactamente cuatro bits, así que dos dígitos son un byte. Por eso un color se escribe como tres pares. La forma corta de tres dígitos en CSS se expande duplicando cada dígito en lugar de escalarlo, de modo que la mayoría de los colores no tiene forma corta, gris medio incluido.
Cómo funciona
- Convierte entre hexadecimal, decimal y binario, con cada dígito hexadecimal equivalente a cuatro bits.
- Maneja valores de color, donde dos dígitos hexadecimales dan los 256 niveles de un canal.
- Hace explícita la correspondencia dígito-bits, sobre la que descansan todas estas convenciones.
1 dígito hex = 4 bits = 16 valores (0–F) 2 dígitos hex = 8 bits = 256 valores (00–FF) #RRGGBB = 3 canales × 8 bits = 24 bits = 16.777.216 colores la forma corta #RGB se expande duplicando: #F0A → #FF00AA
Ejemplo resuelto
Comparar la forma completa de seis dígitos con la corta de tres.
- #RRGGBB son 24 bits: 16.777.216 colores
- #RGB son 12 bits: 4.096 colores
- la forma corta cubre el 0,0244% del espacio
- #888 se expande a #888888 = 136 por canal
- pero el gris medio es #808080 = 128 por canal
#888 y #808080 difieren en 8 niveles en cada canal, y ningún código de tres dígitos produce #808080. La forma corta no es una abreviatura de todos los colores: es un subconjunto pequeño que casualmente puede escribirse con la mitad de caracteres.
Cómo leer el resultado
- La expansión duplica el dígito, no escala el rango. #A se convierte en #AA, no en un valor colocado proporcionalmente, y por eso la paleta corta cae en 0x00, 0x11, 0x22 y así sucesivamente en saltos de 17, saltándose todo lo intermedio.
- El hexadecimal perdura porque la correspondencia con el binario es exacta y mecánica. Un byte son siempre dos caracteres, la conversión no requiere aritmética y no hay redondeo que introduzca error: las mismas razones por las que se usa en hashes, direcciones MAC y volcados de memoria.
- Las mayúsculas no importan en los valores de color ni en la mayoría de analizadores: #FF00AA y #ff00aa son idénticos. Solo cuentan en hashes donde una especificación lo diga, y comparar cadenas hexadecimales sin normalizar mayúsculas es fuente habitual de falsos desajustes.
- El prefijo 0x marca el hexadecimal en la mayoría de lenguajes, # lo marca en CSS y algunos contextos no usan ninguno. Una cadena desnuda de dígitos y letras es ambigua: 10 es diez en decimal y dieciséis en hexadecimal, y nada en los caracteres lo aclara.
Preguntas frecuentes
- ¿Por qué los colores se escriben en hexadecimal y no en decimal?
- Porque cada canal es un byte y un byte son exactamente dos dígitos hexadecimales. En decimal el mismo color es rgb(255, 0, 170): tres números de longitud variable con separadores, frente a seis caracteres fijos que se dividen limpiamente en canales.
- ¿Se puede acortar siempre un color hexadecimal?
- Solo cuando cada par es un dígito repetido. #FF00AA se acorta a #F0A porque todos los pares se repiten; #808080 no se puede acortar en absoluto, porque 80 no es un dígito duplicado. Aproximadamente un color de cada 4.096 tiene forma corta.