Está en la página 1de 5

2. Estndar IEEE 754.

El estndar IEEE 754 ha sido definido por el Instituto de Ingenieros Elctricos y Electrnicos (Institute of Electrical and Electronics Engineers, IEEE) y establece dos formatos bsicos para representar a los nmeros reales en la computadora digital: precisin simple y precisin doble. 2.1. Precisin simple. En precisin simple, para escribir un nmero real se usan 32 bits (4 bytes): 1 bit para el signo (s) del nmero, 23 bits para la mantisa (m) y 8 bits para el exponente (exp), que se distribuyen de la siguiente forma:

El exponente se suele representar en Exceso a 2 1, mientras que, para la mantisa, normalmente se utiliza Signo Magnitud. Adems, la mantisa se suele normalizar colocando la coma decimal a la derecha del bit ms significativo.
Mdulo y signo (MS). En este sistema de representacin, el bit que est situado ms a la izquierda representa el signo, y su valor ser de 0 para el (+) y de 1 para el (). El resto de los bits (N-1) representan el mdulo del nmero. Suponemos en principio que los nmeros no poseen parte decimal, por lo que la coma se supone implcita a la derecha. Por ejemplo, supongamos que disponemos de 8 bits (N = 8) y queremos representar los nmeros 10 y 10. Veamos cules son sus representaciones: Nmero 10 Nmero - 10 0 signo + 1 Signo 0001010 mdulo 0001010 mdulo Exceso a 2 elevado a (N-1). Este mtodo no utiliza ningn bit para el signo, con lo cual todos los bits representan un mdulo o valor que corresponde al nmero representado ms el exceso, que para N bits viene dado por 2 elevado a N-1. Por ejemplo, para 8 bits el exceso es de 128, con lo que el nmero 10 vendr representado por 10 + 128 = 138; para el caso de 10 tendremos 10 + 128 = 118.Veamos cules son sus representaciones: Nmero Nmero 10 : 1 0 0 0 1 0 1 0 - 10 : 0 1 1 1 0 1 1 0

(n-1)

Se denomina rango de representacin en un mtodo determinado al conjunto de nmeros representables en el mismo. Para mdulo y signo el rango de representacin es para N dgitos de:

En este caso, el 0 tiene una nica representacin. que para 8 bits corresponde a: Nmero 0 (0+128) : 10000000

( 2N1 )+ 1 <= x <= (2N1 ) 1


Para el caso de 8 bits, el rango es: 127 <= x <= 127 Para 16 bits, el rango es: - 32767 <= X <= 32767 Para 32 bits, el rango es: 2147483647 <= X <= 2147483647 La ventaja que presenta este sistema frente a otros es la de poseer rango simtrico, mientras que su mayor inconveniente es el de poseer dos representaciones para el 0. Para 8 bits, el 0 tiene las representaciones: 0 0 0 0 0 0 0 0 (+0) 1 0 0 0 0 0 0 0 (- 0)

El rango de representacin es asimtrico (inconveniente) y viene dado por: ( 2N1 ) <= x <= (2N1 ) 1 Para 8 bits: Para 16 bits: Para 32 bits: -128 <= X <= 127 -32768 <= X <= 32767 2147483648 < X <= 2147483647

Ejemplo 1: Para escribir el nmero 101110,010101110100001111100001111100010011(2) en el estndar IEEE 754 (n-1) con precisin simple, exponente en Exceso a 2 1 y mantisa en Signo Magnitud, primero hay que normalizarlo: 1,01110010101110100001111100001111100010011(2) x 25 El exponente, en Exceso a

2(n-1) 1, ser:

5(10) + (28-1 - 1)(10) = 5(10) + (27 - 1) (10) = 5(10) + (128 - 1) (10) = 132(10) = 10000100[EX. a 127] De la mantisa se toman los bits 23 bits ms significativos: 1,0111001010111000000111

El resto de bits no se pueden representar, ya que, no caben en la mantisa. Sin embargo, cuando la mantisa se normaliza situando la coma decimal a la derecha del bit ms significativo, dicho bit siempre vale 1. Por tanto, se puede prescindir de l, y tomar en su lugar un bit ms de la mantisa. De esta forma, la precisin del nmero representado es mayor. As, los bits de la mantisa sern: 01110010101110100001111 Al bit omitido se le llama bit implcito. Por otra parte, el bit de signo vale 0, ya que, el nmero es positivo. En consecuencia, el nmero se puede representar como:
Los programadores, para representar a los nmeros reales en este formato, suelen utilizar el Sistema Hexadecimal.

As pues,

101110,010101110100001111100001111100010011 (2) 42395D0F(16)

[PRECISION SIMPLE]

En este caso, los nmeros no son exactamente iguales, ya que, con precisin simple no se han podido representar todos los bits de la mantisa.

Ejemplo 2: Dado el nmero 3E400000(16) del estndar IEEE 754 con precisin simple, exponente en Exceso a 2 1y mantisa en Signo Magnitud con bit implcito, para averiguar a qu nmero representa en base 10, se pueden realizar los siguientes pasos: 1) Convertir 3E400000(16) a base 2: 2) Obtener los bits del signo, de la mantisa y del exponente:

(n-1)

4) Escribir el nmero en notacin cientfica. 3) Pasar el exponente a base 10: 011111002 - (28-1 - 1)10 = 12410 - (27 - 1)10 = 12410 - (128 - 1)10 = 12410 - 12710 = -3 5) Expresar el nmero en base 10. Para ello, hay dos formas de hacerlo, la primera es: 1,1 x 2-3 = 0,0011(2) = ( 2-3 + 2-4 ) (10) = 0,125(10) + 0,0625(10) = 0,1875(10) y la segunda: 1,1 x 2-3 = ( ( 20 + 2-1) x 2-3 ) (10) = ( ( 1 + 0,5) x 0,125 ) (10) = ( 1,5 x 0,125 )(10) = 0,1875(10) Para ello, la mantisa se debe escribir con el bit implcito (1), seguido de la coma decimal (,) y de los bits de la mantisa (10000000000000000000000), teniendo en cuenta que los ceros por la derecha se pueden despreciar. Por otra parte, el nmero es positivo, ya que, el bit de signo es 0. Por tanto, el nmero es: 1,1 x 2-3

Por tanto, 3E400000(16) [PRECISIN SIMPLE] = 1,1 x 2-3 = 0,0011(2) = 0,1875(10)

2.2. Precisin doble. Por otro lado, en precisin doble, para escribir un nmero real se emplean 64 bits (8 bytes): 1 bit para el signo (s) del nmero, 52 bits para la mantisa (m) y 11 bits para el exponente (exp).

Ejemplo 3: Si se quiere escribir el nmero 19,5625(10) en el estndar IEEE 754 con precisin doble, exponente en Exceso a mantisa en Signo Magnitud con bit implcito, los pasos a seguir son: 1) Cambiar 19,562510 a base 2. Primero la parte entera: y, a continuacin, la parte fraccionaria:

2(n-1) 1 y

De modo que, 2) Normalizar el nmero binario obtenido, colocando la coma decimal a la derecha del bit ms significativo: 10011,1001(2) = 1,00111001 x 24

19,5625(10) = 10011,1001(2)

3) Escribir el exponente en Exceso a

2(n-1) 1:

4(10) + (211-1 - 1) (10) = 4(10) + (210 - 1) (10) = 4(10) + (1024 - 1) (10) = 4(10) + 1023(10) = 1027(10) = 10000000011[EX. a 1023] 5) Expresar el nmero en el estndar IEEE 754 con precisin doble. En este caso, hay que tener en cuenta que el bit de signo vale 0, ya que, el nmero es positivo:

4) Establecer la mantisa utilizando bit implcito. Para ello, se cogen los ocho bits que estn a la derecha de la coma (00111001) y el resto de la mantisa se rellena con ceros:
0011100100000000000000000000000000000000000000000000

6) Representar el nmero en hexadecimal:

De tal forma que, 19,5625(10) = 10011,1001(2) = 1,00111001 x 24 = 4033900000000000(16) [PRECISIN DOBLE]

Tanto en precisin doble como en precisin simple, existen algunos casos especiales que dependen de los valores del signo, del exponente y de la mantisa: Los dos ltimos casos merecen especial atencin, ya que, cuando todos los bits del exponente son ceros (00...0), esto quiere decir que no se est utilizando bit implcito. Si, adems, la mantisa es todo ceros (00...0), el nmero representado es el cero (0), pero si la mantisa es distinta de todo ceros, el nmero que se est representando es muy pequeo, de tal forma que, el exponente valdr -126 1022, dependiendo de si el nmero est escrito en precisin simple o doble, respectivamente. Ejemplo 4: Dado el nmero 805C0000(16) del estndar IEEE 754 con precisin simple, exponente en Exceso a 2 1y mantisa en Signo Magnitud con bit implcito, para averiguar cul nmero representa en base 10, se pueden realizar los siguientes pasos:
1) Convertir 805C000016 a base 2: 2) Obtener los bits del signo, de la mantisa y del exponente:
(n-1)

3) Al observar que todos los bits del exponente son ceros (00000000) y la mantisa es distinta de todo ceros, se deduce que es un caso especial. Se est representado a un nmero muy pequeo sin bit implcito y, por tanto, el exponente es -126.

4) En notacin exponencial, puesto que en este caso no se utiliza bit implcito, la mantisa se escribe con un cero (0), seguido de la coma decimal (,) y de los bits de la mantisa (10111000000000000000000). En cuanto al signo del nmero, es negativo, ya que, el bit de signo es 1. Con todo ello, el nmero es:

-0,10111 x 2-126
5) Expresar el nmero en base 10:

--------------------------------- FIN DEL DOCUMENTO