🧮 Computational Mathematics

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

024 — Aritmética binaria

basico-computacional clase 4 de 20 4 horas demostración binary_arithmetic

La aritmética binaria es la decimal con acarreo en base 2; los desplazamientos multiplican y dividen por potencias de 2.

Fórmulas

x << k = x · 2ᵏ
x >> k = ⌊x / 2ᵏ⌋  (para x ≥ 0)
x & (x−1) apaga el bit menos significativo encendido

Desarrollo

Sumar en binario funciona igual que en decimal: se suma columna a columna y se arrastra el acarreo. La única diferencia es que el acarreo salta cuando la suma llega a 2 en lugar de a 10. Esta simplicidad es la razón por la que el hardware usa base 2: un sumador completo de un bit cabe en unas pocas puertas lógicas.

Los desplazamientos son la operación más barata de un procesador y equivalen a multiplicar o dividir por potencias de 2. x << 3 es x · 8, y x >> 1 es la división entera por 2. Los compiladores hacen esta sustitución automáticamente, pero reconocerla ayuda a leer código de bajo nivel y algoritmos de hashing.

Las operaciones bit a bit —AND, OR, XOR— actúan sobre cada posición de forma independiente, sin acarreo. AND enmascara (deja pasar solo los bits marcados), OR activa, XOR conmuta. XOR tiene una propiedad que se usa constantemente en criptografía: es su propia inversa, (a ^ b) ^ b = a.

Un idiom que conviene conocer: x & (x−1) apaga el bit encendido más a la derecha, porque restar 1 invierte ese bit y todos los ceros a su derecha. Contar cuántas veces se puede aplicar antes de llegar a cero cuenta los bits encendidos (popcount), y esa cuenta aparece en distancias de Hamming y en índices de bases de datos.

Ejemplo trabajado

Operaciones sobre a = 1011₂ (11) y b = 0110₂ (6).

a      = 1011   (11)
b      = 0110   (6)

a + b  = 10001  (17)     acarreo hasta el quinto bit
a & b  = 0010   (2)      solo donde ambos tienen 1
a | b  = 1111   (15)     donde alguno tiene 1
a ^ b  = 1101   (13)     donde difieren

a << 2 = 101100 (44)     = 11 · 4    ✓
a >> 1 = 101    (5)      = ⌊11/2⌋    ✓

Verificación XOR:  (a ^ b) ^ b = 1101 ^ 0110 = 1011 = a   ✓

Qué calcula el laboratorio

Suma y desplazamiento en binario, con acarreo visible.

python classes/part-01-aritmetica-computacional-y-representacion-numerica/024-aritmetica-binaria/lab.py
compmath run 024

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "a": "1011",
  "b": "0110",
  "a+b": "10001",
  "a&b": "0010",
  "a|b": "1111",
  "a^b": "1101"
}

Errores comunes

Dónde se usa

Hashing, compresión, criptografía, banderas de configuración, índices de bitmap y optimización de bucles. La distancia de Hamming entre dos cadenas de bits es el popcount de su XOR.

Idea rectora de la parte

La cancelación catastrófica destruye dígitos significativos sin lanzar excepciones.

Error a evitar

Comparar floats con `==` en lugar de una tolerancia razonada.

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