🧮 Computational Mathematics

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

022 — Conversión decimal a binario

basico-computacional clase 2 de 20 4 horas demostración decimal_to_binary

Convertir a binario es dividir sucesivamente por 2 y leer los restos en orden inverso.

Fórmulas

n = Σ bᵢ·2ⁱ  con bᵢ ∈ {0,1}
restos de n/2 leídos de abajo arriba = representación binaria

Desarrollo

El algoritmo de divisiones sucesivas no es un truco: es la construcción directa de la representación posicional. Al dividir n entre 2, el resto es el bit menos significativo —dice si n es par o impar— y el cociente es el número «desplazado un bit a la derecha». Repetir hasta llegar a cero produce todos los bits, del menos al más significativo, y por eso se leen al revés.

La representación es única: todo entero positivo tiene exactamente una escritura en base 2. Esa unicidad es la que permite que dos máquinas distintas interpreten los mismos bits como el mismo número, y es la que se pierde en punto flotante, donde varios reales distintos comparten representación.

El mismo algoritmo funciona en cualquier base cambiando el divisor. En base 16 los restos van de 0 a 15 y se escriben con dígitos hexadecimales; en base 8, de 0 a 7. La clase 023 explota que 16 y 8 son potencias de 2 para convertir sin dividir.

Un detalle práctico: Python trae la conversión en format(n, "b") y int(s, 2), pero implementarla a mano una vez deja claro por qué el bit menos significativo es la paridad, hecho que se usará constantemente en la parte 04 (aritmética modular) y en cualquier manipulación de bits.

Ejemplo trabajado

Convertir 156 a binario por divisiones sucesivas.

156 / 2 = 78  resto 0    ← bit menos significativo
 78 / 2 = 39  resto 0
 39 / 2 = 19  resto 1
 19 / 2 =  9  resto 1
  9 / 2 =  4  resto 1
  4 / 2 =  2  resto 0
  2 / 2 =  1  resto 0
  1 / 2 =  0  resto 1    ← bit más significativo

Leídos de abajo arriba: 10011100

Verificación: 128 + 16 + 8 + 4 = 156   ✓
              (2⁷ + 2⁴ + 2³ + 2²)

Qué calcula el laboratorio

Divisiones sucesivas frente a la conversión de la biblioteca.

python classes/part-01-aritmetica-computacional-y-representacion-numerica/022-conversion-decimal-a-binario/lab.py
compmath run 022

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "decimal": 156,
  "restos_en_orden_de_calculo": [
    0,
    0,
    1,
    1,
    1,
    0,
    0,
    1
  ],
  "binario_manual": "10011100",
  "binario_builtin": "10011100",
  "coinciden": true,
  "reconstruido": 156
}

Errores comunes

Dónde se usa

Máscaras de bits, permisos de sistema de archivos, banderas de configuración, direcciones de red y cualquier serialización binaria. Es el prerrequisito de la representación IEEE 754.

Idea rectora de la parte

El error relativo, no el absoluto, es la magnitud que se propaga.

Error a evitar

Suponer que la suma de floats es asociativa.

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