🧮 Computational Mathematics

Inicio · Parte 01 — Aritmética computacional y representación numérica

023 — Binario, octal y hexadecimal

basico-computacional clase 3 de 20 4 horas demostración bases

Hexadecimal y octal son taquigrafías de binario porque 16 y 8 son potencias de 2.

Fórmulas

1 dígito hexadecimal = 4 bits
1 dígito octal = 3 bits

Desarrollo

Los programadores usan hexadecimal por una razón puramente práctica: cada dígito hexadecimal corresponde exactamente a 4 bits, así que convertir entre binario y hex se hace por grupos, sin dividir nada. 1101 0110 es D6 porque 1101 es 13 (D) y 0110 es 6. En octal ocurre lo mismo con grupos de 3 bits.

Esta correspondencia solo funciona porque 16 = 2⁴ y 8 = 2³. Con base 10 no hay agrupación posible, y por eso convertir decimal ↔ binario requiere el algoritmo de divisiones de la clase 022 mientras que hex ↔ binario es una tabla de 16 entradas.

El hexadecimal es además compacto: un byte se escribe con dos dígitos en lugar de ocho, y una dirección de 32 bits con ocho en lugar de treinta y dos. Por eso aparece en direcciones de memoria, colores CSS (#7c5cff son tres bytes), UUID, hashes y volcados de memoria.

Al leer código conviene reconocer los prefijos: 0b para binario, 0o para octal, 0x para hexadecimal. Python los acepta todos y int(s, base) convierte desde cualquier base entre 2 y 36. Los permisos de Unix (chmod 755) son octal precisamente porque cada dígito codifica tres bits de permiso: lectura, escritura y ejecución.

Ejemplo trabajado

El mismo número en cuatro bases.

decimal      3 735 928 559
hexadecimal  deadbeef
octal        33653337357
binario      11011110101011011011111011101111

Agrupación hex ← binario (grupos de 4, desde la derecha):
  1101 1110 1010 1101 1011 1110 1110 1111
     d    e    a    d    b    e    e    f     ✓

Bits necesarios: 32

deadbeef es un valor centinela clásico en depuración: es hexadecimal legible y difícilmente aparece por accidente en memoria.

Qué calcula el laboratorio

La misma cantidad en base 2, 8, 10 y 16.

python classes/part-01-aritmetica-computacional-y-representacion-numerica/023-binario-octal-y-hexadecimal/lab.py
compmath run 023

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "decimal": 3735928559,
  "binario": "11011110101011011011111011101111",
  "octal": "33653337357",
  "hexadecimal": "deadbeef",
  "digitos_binarios": 32,
  "un_hex_equivale_a_bits": 4
}

Errores comunes

Dónde se usa

Direcciones de memoria, colores, hashes, UUID, permisos Unix y protocolos binarios. Leer un volcado hexadecimal es una habilidad de depuración básica.

Idea rectora de la parte

Condicionamiento es del problema; estabilidad es del algoritmo.

Error a evitar

Usar float para dinero en vez de Decimal o enteros de centavos.

Conexión con IA

float32, bfloat16 y la cuantización a int8 son decisiones de representación. Los NaN en un entrenamiento casi siempre nacen aquí, no en la arquitectura.

Bibliografía de la clase

Archivos de la clase