martes, 30 de noviembre de 2010

Estándar IEEE 754-2008

El estándar IEEE 754-2008 son una serie de normas que establecen dos formatos básicos para representar a los números reales en una computadora digital: precisión simple y precisión doble. Ha sido definido por el Instituto de Ingenieros Eléctricos y Electrónicos (Institute of Electrical and Electronics Engineers, IEEE).

Para escribir un número real en precisión simple se usan 32 bits (4 bytes): 1 bit para el signo (s) del número (positivo o negativo), 23 bits para la mantisa (m) y 8 bits para el exponente (exp).

El exponente se suele representar en Exceso a $2^{n-1}-1$, mientras que, para la mantisa, normalmente se utiliza Signo Magnitud. Además, la mantisa se suele normalizar colocando la coma decimal a la derecha del bit más significativo.

Por ejemplo, si queremos escribir el número:

$101110,010101110100001111100001111100010011_2$

en el estándar IEEE 754 con precisión simple, exponente en Exceso a $2^{n-1}-1$ y mantisa en Signo Magnitud, primero hay que normalizarlo colocando la coma a la derecha del bit mas significativo:

$1,01110010101110100001111100001111100010011_2 \times 2^5$

El exponente, en Exceso a $2^{n-1} -1$, será:

$510 + (2^{8-1} - 1)_{10} = 510 + (2^7 - 1)_{10} = 510 + (128 - 1)_{10} = 10000100_2$

De la mantisa se cogen los bits 23 bits más significativos, se trunca:

$1,0111001010111000000111_2$

El resto de bits no se pueden representar, porque no caben en la mantisa. Sin embargo, cuando la mantisa se normaliza situando la coma decimal a la derecha del bit más significativo, dicho bit siempre vale 1. Por tanto, se puede prescindir de él, y coger en su lugar un bit más de la mantisa. De esta forma, la precisión del número representado es mayor. Así, los bits de la mantisa serán:

$01110010101110100001111_2$

Al bit omitido se le llama bit implícito. Por otra parte, el bit de signo vale 0, ya que, el número es positivo. En consecuencia, el número se puede representar como:

0     10000100     01110010101110100001111
s         exp                        mantisa


En precisión doble, al escribir un número real se emplean 64 bits (8 bytes): 1 bit para el signo (s) del número, 52 bits para la mantisa (m) y 11 bits para el exponente (exp).

Si se quiere escribir el número 19,562510 en el estándar IEEE 754 con precisión doble, exponente en Exceso a $2^{n-1}-1$ y mantisa en Signo Magnitud con bit implícito, los pasos a seguir son:


1º) Cambiar 19,562510 a base 2. Parte entera y fraccionaria:

$19,5625_{10} = 10011,1001_2$

2º) Normalizar el número binario obtenido, colocando la coma decimal a la derecha del bit más significativo:

$10011,1001_2 = 1,00111001 \times 2^4$

3º) Escribir el exponente en Exceso a $2^{n-1}-1$:

$4_{10} + (2^{11-1} - 1)_{10} = 4_{10} + (2^{10} - 1)_{10} = 4_{10} + (1024 - 1)_{10} $

$= 4_{10} + 1023_{10} = 1027_{10} = 10000000011$

4º) Establecer la mantisa utilizando bit implícito. Para ello, se cogen los ocho bits que están a la derecha de la coma (00111001) y el resto de la mantisa se rellena con ceros:

$0011100100000000000000000000000000000000000000000000$

5º) Expresar el número en el estándar IEEE 754 con precisión doble. En este caso, hay que tener en cuenta que el bit de signo vale 0, ya que, el número es positivo:

0     10000000011     0011100100000000000000000000000000000000000000000000
s            exp                                                  mantisa


Bibliografia:


2 comentarios:

  1. Buena explicación.
    arregla por favor el primer ejemplo que por decir 5 en base decimal aparece como 510.

    ResponderEliminar