Inicio · Parte 01 — Aritmética computacional y representación numérica
valor = (−1)^s · (1 + m/2⁵²) · 2^(e − 1023)
float64: 1 bit de signo + 11 de exponente + 52 de mantisa = 64
El estándar IEEE 754, publicado en 1985 y revisado en 2019, unificó lo que antes era un caos de formatos incompatibles entre fabricantes. Su diseño responde a una idea: guardar un número en notación científica binaria, con la mantisa normalizada al intervalo [1, 2) para que el primer bit sea siempre 1 y no haga falta almacenarlo. Ese «bit implícito» regala un bit de precisión gratis.
Los tres campos tienen papeles distintos. El signo es un bit. El exponente se guarda sesgado (sumándole 1023 en float64) para poder representar exponentes negativos sin necesitar un signo propio; con 11 bits cubre de 2⁻¹⁰²² a 2¹⁰²³, es decir de 10⁻³⁰⁸ a 10³⁰⁸ aproximadamente. La mantisa de 52 bits (más el implícito, 53 efectivos) determina la precisión: log₁₀(2⁵³) ≈ 15.95 dígitos decimales.
Los valores extremos del exponente están reservados: todo ceros indica cero o subnormal, todo unos indica infinito o NaN. Por eso existen +inf, -inf y NaN como valores de primera clase en lugar de como errores, lo que permite que un cálculo continúe y el problema se detecte al final.
Reconstruir un float a mano desde sus bits, como hace el laboratorio, deja claro que no hay nada mágico: es notación científica en base 2 con un formato de empaquetado acordado. Y explica de inmediato por qué la precisión es relativa: los 53 bits de mantisa siempre representan los mismos dígitos significativos, sea cual sea el exponente.
Descomponer −6.25 en float64.
−6.25 en binario = −110.01₂ = −1.1001₂ × 2²
signo s = 1 (negativo)
exponente e = 2 + 1023 = 1025 = 10000000001₂
mantisa m = 1001000...0 (el 1 inicial es implícito)
Reconstrucción:
(−1)¹ · (1 + m/2⁵²) · 2^(1025−1023)
= −1 · 1.5625 · 4
= −6.25 ✓
Precisión: 53 bits ⇒ log₁₀(2⁵³) ≈ 15.95 dígitos decimales
Rango: exponente de −1022 a 1023 ⇒ ~1e−308 a ~1e308
Signo, exponente y mantisa de un float64.
python classes/part-01-aritmetica-computacional-y-representacion-numerica/028-ieee-754-estructura-de-un-float/lab.py
compmath run 028
valorbitssignoexponente_brutosesgoexponente_realmantisa_bitsreconstruido{
"valor": -6.25,
"bits": "1100000000011001000000000000000000000000000000000000000000000000",
"signo": "1",
"exponente_bruto": 1025,
"sesgo": 1023,
"exponente_real": 2
}
Es el formato de casi todo cálculo científico. Entenderlo explica float32 (24 bits de mantisa), bfloat16 (8 bits de mantisa pero el mismo rango que float32, por eso se usa en entrenamiento) y float16 (10 bits, rango reducido).
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.
10.1145/103162.103163 verificado en Crossref (2026-08-19).