Informática

Conversor IEEE 754

Escribe un número decimal para ver cómo se guarda en coma flotante IEEE 754, o pega un patrón hexadecimal o binario para decodificarlo.

Ejemplos:

Paso a paso

    Cómo se guarda un número en coma flotante

    El estándar IEEE 754 escribe cualquier número real en notación científica binaria: (−1)s × 1,m × 2e − sesgo. Se guardan tres campos:

    FormatoSignoExponenteMantisaSesgoCifras decimales
    Simple (float, binary32)1 bit8 bits23 bits127≈ 7
    Doble (double, binary64)1 bit11 bits52 bits1023≈ 15–16

    El 1 de delante de la coma no se guarda porque, en un número normalizado, siempre está ahí: es el bit implícito y regala un bit de precisión. El exponente se guarda en exceso (sumándole el sesgo) para que se pueda comparar como un entero sin signo.

    Método para convertir a mano

    1. Apunta el signo y quédate con el valor absoluto.
    2. Pasa el número a binario: la parte entera por divisiones y la fraccionaria multiplicando por 2 (lo tienes paso a paso en el conversor de bases).
    3. Normaliza desplazando la coma hasta dejar un único 1 delante. El número de posiciones es el exponente E (positivo si mueves la coma a la izquierda).
    4. Calcula el exponente almacenado: E + 127 en simple o E + 1023 en doble, y pásalo a binario.
    5. La mantisa son los bits que hay detrás de la coma, rellenados con ceros o redondeados hasta 23 (o 52).

    Ejemplo · −13,375 en precisión simple

    13 = 1101 y 0,375 = 0,011, así que 13,375 = 1101,011₂ = 1,101011 × 2³. Signo 1; exponente 3 + 127 = 130 = 10000010; mantisa 10101100000000000000000. Juntando: 1 10000010 10101100000000000000000 = 0xC1560000.

    Valores especiales

    • Cero: exponente y mantisa a 0. Existen +0 y −0.
    • Desnormalizados: exponente a 0 y mantisa distinta de 0. Representan números menores que el mínimo normalizado (≈ 1,18 × 10⁻³⁸ en simple), sin el 1 implícito.
    • Infinito: exponente con todos los bits a 1 y mantisa a 0.
    • NaN: exponente con todos los bits a 1 y mantisa distinta de 0. Sale de operaciones como 0/0 o √−1.

    Por qué 0,1 + 0,2 no es 0,3

    0,1 tiene infinitos decimales en binario (0,0001100110011…), así que se guarda redondeado. En doble precisión el valor almacenado es ligeramente mayor que 0,1, igual que el de 0,2, y su suma se queda un poco por encima del double más cercano a 0,3. Por eso en casi cualquier lenguaje 0.1 + 0.2 == 0.3 da falso: no es un fallo del lenguaje, es el formato. Escribe 0,1 arriba y verás el valor exacto que se guarda.

    Preguntas frecuentes

    ¿Cuál es el mayor entero que se representa exacto?

    En simple precisión, 224 = 16 777 216: a partir de ahí no todos los enteros caben (prueba 16 777 217, que se redondea). En doble, 253 = 9 007 199 254 740 992, que es el famoso Number.MAX_SAFE_INTEGER + 1 de JavaScript.

    ¿Cómo se redondea cuando no cabe la mantisa?

    Por defecto, al más cercano y, en caso de empate exacto, al que termina en 0 («redondeo al par»). Así el error medio es cero y no se acumula hacia un lado.

    ¿Qué rango tiene cada formato?

    Simple: de ≈ 1,18 × 10⁻³⁸ a ≈ 3,40 × 10³⁸ normalizados (hasta ≈ 1,4 × 10⁻⁴⁵ con desnormalizados). Doble: de ≈ 2,23 × 10⁻³⁰⁸ a ≈ 1,80 × 10³⁰⁸.

    Más herramientas de informática