Las computadoras almacenan todo como binario — secuencias de unos y ceros que representan estados eléctricos de encendido/apagado. Pero el binario es incómodo para que los humanos lo lean y escriban. Un entero de 32 bits requiere 32 dígitos binarios. Por esto los desarrolladores usan hexadecimal como una abreviatura binaria compacta y ocasionalmente octal para permisos de archivo Unix y otros contextos heredados. Comprender estos sistemas numéricos elimina el misterio de las direcciones de memoria, los códigos de color, los permisos de archivo y las operaciones de manipulación de bits.
Cómo Funcionan las Bases Numéricas
Una base numérica (o radix) define cuántos dígitos únicos usa un sistema numérico. El decimal (base 10) usa los dígitos 0–9. El binario (base 2) usa solo 0 y 1. El octal (base 8) usa 0–7. El hexadecimal (base 16) usa 0–9 y luego A–F para representar los valores 10–15. Cada posición de dígito representa una potencia de la base: en decimal, 123 significa 1×100 + 2×10 + 3×1.
La idea clave es que cualquier entero puede representarse exactamente en cualquier base — solo cambia la notación. El número trece es 13 en decimal, 1101 en binario, 15 en octal y D en hexadecimal. Todos estos son el mismo valor. La base que eliges es una opción de representación que afecta la legibilidad y la conveniencia para diferentes tareas.
La conversión entre bases sigue un algoritmo consistente. Para convertir de decimal a otra base, divide repetidamente por la base objetivo y registra los restos en orden inverso. Para convertir de binario a cualquier otra base que sea una potencia de 2 (como 8 o 16), agrupa los dígitos binarios en grupos de 3 (para octal) o 4 (para hex) y convierte cada grupo directamente.
Binario: El Lenguaje del Hardware
El binario es el lenguaje nativo de los circuitos digitales. Un bit es un solo dígito binario. Un byte son 8 bits, capaz de representar 256 valores (0–255 en decimal, 00–FF en hex). Comprender los patrones de bits es esencial para trabajar con formatos de archivo binarios, protocolos de red, registros de hardware y operaciones bit a bit en código.
Los operadores bit a bit (AND, OR, XOR, NOT, desplazamiento izquierdo, desplazamiento derecho) manipulan bits individuales. Estas operaciones se usan constantemente en programación de sistemas, criptografía y código de alto rendimiento. Un desplazamiento izquierdo de una posición (x << 1) es equivalente a multiplicar por 2. Un AND bit a bit con una máscara (x & 0xFF) extrae los 8 bits más bajos.
El complemento a dos es la representación estándar para enteros con signo en binario. Los números positivos se representan normalmente. Para los números negativos, invierte todos los bits y agrega 1: la representación de 8 bits de -1 es 11111111. Esta codificación hace que la resta funcione correctamente usando el mismo circuito que la suma.
Hexadecimal: La Abreviatura del Desarrollador
Los desarrolladores adoran el hex porque cada dígito hex representa exactamente 4 bits (un nibble). Esto significa que un byte siempre es exactamente dos dígitos hex: 0xFF = 255 = 11111111 en binario. Este mapeo limpio convierte al hex en una abreviatura compacta y sin pérdida de valores binarios. Una dirección de memoria de 32 bits que requeriría 32 dígitos binarios se expresa en 8 dígitos hex.
El hex aparece constantemente en contextos de desarrollo: códigos de color HTML/CSS (#FF5733), direcciones de memoria (0x7FFF5FBFF8B8), puntos de código Unicode (U+1F600), representaciones a nivel de byte en depuradores y editores hex, y salidas de hash SHA-256 (64 caracteres hex = 256 bits).
En la mayoría de los lenguajes de programación, los literales hex tienen el prefijo 0x: 0xFF es 255, 0x1A es 26. Algunos lenguajes también admiten literales binarios con el prefijo 0b (0b1101 = 13) y octal con el prefijo 0o (0o17 = 15). Mezclar bases literales en una sola expresión es válido — 0xFF + 10 + 0b1010 es una expresión legal que evalúa a 271.
Octal: Permisos de Archivo y Sistemas Heredados
El octal era comúnmente usado en los primeros sistemas informáticos porque el hardware temprano usaba bytes de 6 bits que se dividían uniformemente en dos dígitos octales de 3 bits. Hoy, el uso principal del octal que queda son los permisos de archivo Unix/Linux. Una cadena de permisos como chmod 755 usa tres dígitos octales, cada uno representando tres bits para propietario, grupo y otros.
Cada dígito de permiso octal es la suma de los valores de lectura (4), escritura (2) y ejecución (1). chmod 755 establece el propietario en rwx (4+2+1=7), el grupo en r-x (4+0+1=5) y otros en r-x (5). Esta codificación se mapea directamente a un valor binario de 9 bits: 111 101 101.
Fuera de los permisos de archivo, el octal aparece en algunos protocolos heredados y formatos de archivo más antiguos. Los protocolos modernos usan abrumadoramente hexadecimal cuando se necesita una abreviatura binaria. Si encuentras 0o o un literal octal en código, generalmente son permisos de archivo o una interfaz de compatibilidad con una llamada al sistema POSIX.
El binario, el hex y el octal no son temas separados — son tres lentes sobre el mismo número subyacente. La fluidez con estas representaciones desbloquea un modelo mental más claro de cómo se almacenan y manipulan los datos a nivel de hardware. Un convertidor de base numérica elimina la carga aritmética de la conversión manual, permitiéndote concentrarte en la lógica de lo que significa el número en lugar de en la mecánica de traducirlo.