Inicio · Parte 01 — Aritmética computacional y representación numérica
valores representables con n bits = 2ⁿ
bits necesarios para k valores = ⌈log₂ k⌉
Un bit distingue dos estados. Dos bits distinguen cuatro, porque cada estado del primero se combina con cada estado del segundo. La regla del producto —que la clase 087 formalizará como combinatoria— da directamente 2ⁿ para n bits, y esa cuenta es la base de todo dimensionamiento en computación.
La relación inversa importa igual: para representar k valores distintos hacen falta ⌈log₂ k⌉ bits. Un millón de valores necesita 20 bits; mil millones, 30. El logaritmo convierte una multiplicación de posibilidades en una suma de bits, y por eso la información se mide en bits (clase 262): es la unidad natural en la que las posibilidades se suman.
Los anchos habituales no son arbitrarios: 8, 16, 32 y 64 bits corresponden a las unidades que el hardware manipula de una vez. Elegir el ancho es elegir un compromiso entre rango y memoria. En deep learning esa elección es un tema activo: pasar de float32 a bfloat16 reduce a la mitad la memoria de activaciones y permite lotes mayores, a costa de precisión.
Conviene separar desde ya dos cosas que el ancho de palabra confunde: cuántos valores distintos caben (rango) y cuán juntos están (precisión). Un int32 y un float32 ocupan lo mismo y representan cosas radicalmente distintas: el entero cubre un rango pequeño con espaciado uniforme de 1; el flotante cubre un rango enorme con espaciado variable.
Cuántos bits hacen falta y cuántos valores caben.
ancho valores representables
1 bit 2
1 byte 256
16 bits 65 536
32 bits 4 294 967 296
64 bits 1.8446744e19
Para 1000 valores: ⌈log₂ 1000⌉ = 10 bits (2¹⁰ = 1024 ≥ 1000)
Para 1 000 000 valores: ⌈log₂ 10⁶⌉ = 20 bits (2²⁰ = 1 048 576)
Observa el salto: duplicar los bits no duplica los valores, los eleva al cuadrado. De 32 a 64 bits no hay «el doble de números»: hay 4·10⁹ veces más.
Cuántos valores distintos codifica cada ancho de palabra.
python classes/part-01-aritmetica-computacional-y-representacion-numerica/021-bits-bytes-y-sistemas-de-numeracion/lab.py
compmath run 021
valores_por_bitvalores_en_1_bytevalores_en_16_bitsvalores_en_32_bitsvalores_en_64_bitsbits_para_1000_valoresbits_para_1_millon{
"valores_por_bit": 2,
"valores_en_1_byte": 256,
"valores_en_16_bits": 65536,
"valores_en_32_bits": 4294967296,
"valores_en_64_bits": 18446744073709551616,
"bits_para_1000_valores": 10
}
Diseño de esquemas de base de datos, formatos binarios, cuantización de modelos y dimensionamiento de índices. La elección float32 frente a bfloat16 en entrenamiento es exactamente esta decisión.
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.
9780128203316 verificado en International ISBN Agency (2026-08-19).