Sunteți pe pagina 1din 23

http://www.carlospes.com/curso_representacion_datos/06_01_estandar_ieee_754.

php

Estndar IEEE 754


Cmo se escribe un nmero en el 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.

Precisin Simple en el Estndar IEEE 754


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:

Figura - Representacin de un nmero real con precisin simple en el estndar IEEE 754. El exponente se suele representar en Exceso a 2n-1-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. Ejemplo 1: Para escribir el nmero 101110,0101011101000011111000011111000100112 en el estndar IEEE 754 con precisin simple, exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud, primero hay que normalizarlo: 1,011100101011101000011111000011111000100112 x 25 El exponente, en Exceso a 2n-1-1, ser: 510 + (28-1 - 1)10 = 510 + (27 - 1)10 = 510 + (128 - 1)10 = 13210 = 10000100EX. a 127 De la mantisa se cogen 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 coger 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,

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 3E400000CFL del estndar IEEE 754 con precisin simple, exponente en Exceso a 2n-11 y mantisa en Signo Magnitud con bit implcito, para averiguar a qu nmero representa en base 10, se pueden realizar los siguientes pasos: 1) Convertir 3E40000016 a base 2:

2) Obtener los bits del signo, de la mantisa y del exponente:

3) Pasar el exponente a base 10: 011111002 - (28-1 - 1)10 = 12410 - (27 - 1)10 = 12410 - (128 - 1)10 = 12410 - 12710 = -3 4) Escribir el nmero en notacin cientfica. 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 5) Expresar el nmero en base 10. Para ello, hay dos formas de hacerlo, la primera es: 1,1 x 2-3 = 0,00112 = ( 2-3 + 2-4 )10 = 0,12510 + 0,062510 = 0,187510 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,187510 Por tanto, 3E400000CFL (PRECISIN SIMPLE) = 1,1 x 2-3 = 0,00112 = 0,187510

Precisin Doble en el Estndar IEEE 754


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).

Figura - Representacin de un nmero real con precisin doble en el estndar IEEE 754. Ejemplo 3: Si se quiere escribir el nmero 19,562510 en el estndar IEEE 754 con precisin doble, exponente en Exceso a 2n-1-1 y 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:

De modo que, 19,562510 = 10011,10012 2) Normalizar el nmero binario obtenido, colocando la coma decimal a la derecha del bit ms significativo: 10011,10012 = 1,00111001 x 24 3) Escribir el exponente en Exceso a 2n-1-1: 410 + (211-1 - 1)10 = 410 + (210 - 1)10 = 410 + (1024 - 1)10 = 102710 = 10000000011EX. a 1023 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 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:

6) Representar el nmero en hexadecimal:

De tal forma que, 19,562510 = 10011,10012 = 1,00111001 x 24 = 4033A00000000000CFL(PRECISIN DOBLE)

Casos especiales en el Estndar IEEE 754


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:

Figura - Casos especiales en el estndar IEEE 754 con precisin simple o doble. 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 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 805C0000CFL del estndar IEEE 754 con precisin simple, exponente en Exceso a 2n-11 y mantisa en Signo Magnitud con bit implcito, para averiguar a qu 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:

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 es1. Con todo ello, el nmero es: -0,10111 x 2-126 5) Expresar el nmero en base 10:

Cmo calcular el valor en base 10 de un nmero escrito en IEEE 754?


En las dos tablas siguientes se resumen los clculos que hay que realizar para deducir el valor en base 10 de un nmero escrito en el estndar IEEE 754 con precisin simple o doble.

Figura - Clculo del valor en base 10 de un nmero escrito en IEEE 754 con precisin simple.

Figura - Clculo del valor en base 10 de un nmero escrito en IEEE 754 con precisin doble.

Rangos de representacin en el Estndar IEEE 754


Los rangos de representacin en el estndar IEEE 754 con precisin simple y doble, exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implcito, son los siguientes:

Figura - Rango de representacin en el estndar IEEE 754 con precisin simple.

Figura - Rango de representacin en el estndar IEEE 754 con precisin doble. Ambos rangos de representacin son discontinuos, es decir, no se pueden representar todos los nmeros reales que existen entre dos cualesquiera de ellos. Esto es debido a que entre dos nmeros reales cualesquiera siempre existen infinitos nmeros, sin embargo, slo se dispone de un nmero determinado de bits para representar a los nmeros reales. Por esta razn, en las computadoras digitales no se pueden representar a todos los nmeros reales. Por ejemplo, con precisin simple, alrededor del nmero cero (0) existen infinitos nmeros reales, mayores que -2-126 y menores que2126, que no son representables. Grficamente:

Figura - Nmeros no representables en el estndar IEEE 754 con precisin simple.

IEEE coma flotante


El estndar de la IEEE para aritmtica en coma flotante (IEEE 754) es el estndar ms extendido para las computaciones en coma flotante, y es seguido por muchas de las mejoras de CPU yFPU. El estndar define formatos para la representacin de nmeros en coma flotante (incluyendo el cero) y valores desnormalizados, as como valores especiales como infinito y NaN, con un conjunto de operaciones en coma flotante que trabaja sobre estos valores. Tambin especifica cuatro modos de redondeo y cinco excepciones (incluyendo cundo ocurren dichas excepciones y qu sucede en esos momentos). IEEE 754 especifica cuatro formatos para la representacin de valores en coma flotante: precisin simple (32 bits), precisin doble (64 bits), precisin simple extendida ( 43 bits, no usada normalmente) y precisin doble extendida ( 79 bits, usualmente implementada con 80 bits). Slo los valores de 32 bits son requeridos por el estndar, los otros son opcionales. Muchos lenguajes especifican qu formatos y aritmtica de la IEEE implementan, a pesar de que a veces son opcionales. Por ejemplo, el lenguaje de programacin C, ahora permite pero no requiere la aritmtica de la IEEE (el tipo de C float es tpicamente usado para la precisin simple de la IEEE y el tipo double usa la precisin doble del la IEEE). El ttulo completo del estndar es IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985), y tambin es conocido por IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (originalmente el nmero de referencia era IEC 559:1989). [1]
Contenido
[ocultar]

1 Anatoma de un nmero en coma flotante

o o

1.1 Precisin simple 32-bits 1.2 Ejemplo

2 Enlaces externos

[editar]Anatoma [editar]Precisin

de un nmero en coma flotante


simple 32-bits

Un nmero en coma flotante de precisin simple se almacena en una palabra de 32 bits.

1 |S|

8 Exp | Mantisa

23

<-- tamao en bits |

+-+--------+-----------------------+

+-+--------+-----------------------+ 31 30 derecha) desplazado +127 23 22 0 <-- ndice del bit (0 a la

donde S es el bit de signo y Exp es el campo exponente. (Para el signo: 0=Positivo ; 1= Negativo). El exponente es desplazado en el un nmero en precisin simple, un exponente en el rango 126 a +127 es desplazado mediante la suma de 127 para obtener un valor en el rango 1 a 254 (0 y 255 tienen valores especiales descritos ms adelante). Cuando se interpreta el valor en coma flotante, el nmero es desplazado de nuevo para obtener el exponente real. El conjunto de valores posibles pueden ser divididos en los siguientes: ceros nmeros normalizados nmeros desnormalizados infinitos NaN (E, no es un nmero, como por ejemplo, la raz cuadrada de un nmero negativo)

    

Las clases se distinguen principalmente por el valor del campo Exp, siendo modificada sta por el campo fraccin. Considera Exp y Fraccin como campos de nmeros binarios sin signo (Exp se encuentra en el rango 0255):

Clase

Exp

Fraccin

Ceros

Nmeros desnormalizados 0

distinto de 0

Nmeros normalizados

1-254 cualquiera

Infinitos

255

NaN (Not a Number)

255

distinto de 0

Para nmeros normalizados, los ms comunes, Exp es el exponente desplazado y Fraccin es la parte fraccional del significante (o significando). El nmero tiene valor v: v = s 2e m Donde s = +1 (nmeros positivos) cuando S es 0 s = 1 (nmeros negativos) cuando S es 1 e = Exp

llama "biased with 127" en ingls)

m = 1,Fraccin en binario (esto es, el significando es el nmero binario 1 seguido por la coma decimal seguido por los bits de Fraccin). Por lo tanto, 1 m < 2. Notas: 1. Los nmeros desnormalizados son iguales excepto que e = 126 y m = 0,Fraccin. (e NO es 127 : el significando ha de ser desplazado a la derecha por un bit ms, de forma que incluya el bit principal, que no siempre es 1 en este caso. Esto se balancea incrementando el exponente a -126 para el clculo.) 2.

126 es el menor exponente para un nmero desnormalizado

3. Hay dos ceros. +0 (S es 0) y 0 (S es 1) 4. Hay dos infinitos + (S es 0) y (S es 1) 5. Los NaN s pueden tener un signo y un significando, pero estos no tienen otro significado que el que puedan aportar en pruebas de diagnstico; el primer bit del significando es a menudo utilizado para distinguir NaN s sealizados de NaN s silenciosos 6. los NaNs y los infinitos tienen todos los bits a 1 en el campo Exp.

[editar]Ejemplo
Codifiquemos el nmero decimal -118,625 usando el sistema de la IEEE 754. Necesitamos obtener el signo, el exponente y la fraccin. Dado que es un nmero negativo, el bit de signo es "1". Busquemos los dems valores:

127 (en otras palabras, al exponente se le suma 127 y se almacena, a esto tambin se le

Primero, escribimos el nmero (sin signo) usando notacin binaria. Mira el sistema de numeracin binario para ver cmo hacer esto. El resultado es 1110110,101. Ahora, movamos la coma decimal a la izquierda, dejando slo un 1 a su izquierda. 1110110,101=1,11011010126 Esto es un nmero en coma flotante normalizado. El significante es la parte a la derecha de la coma decimal, rellenada con ceros a la derecha hasta que obtengamos todos los 23 bits. Es decir 11011010100000000000000. El exponente es 6, pero necesitamos convertirlo a binario y desplazarlo (de forma que el exponente ms negativo es 0, y todos los exponentes son solamente nmeros binarios no negativos). Para el formato IEEE 754 de 32 bits, el desplazamiento es 127, as es que 6 + 127 = 133. En binario, esto se escribe como 10000101. Poniendo todo junto:

1 |S|

8 Exp |

23 Significante |

<-- tamao en bits

+-+--------+-----------------------+ |1|10000101|11011010100000000000000| +-+--------+-----------------------+ 31 30 derecha) desplazado +127 23 22 0 <-- ndice del bit (0 a la

http://www.error500.net/garbagecollector/apuntes/repres entacin_interna_de_nmero.php

Marzo 24, 2004


Representacin interna de Nmeros reales en el ordenador. IEEE 754
Escrito el Marzo 24, 2004 02:17 PM en Apuntes .

Como veamos el otro da, hay que establecer una correspondencia entre el conjunto los datos a representar y el binario limitado a los n bits que constiyan el ancho de palabra en el procesador. La codificacin depende del tipo de dato a representar y en el caso de los reales tenemos un problema y dos soluciones. El problema para la representacin interna de nmeros reales en el ordenador digital estriba en el punto decimal que separa la parte entera y la parte fraccionaria, adems del problema compartido con los nmeros enteros del signo. Las dos estrategias que hay para solucionarlas son la representacin en punto fijo y la ms habitual, ya en casi todos los ordenadores modernos, representacin en coma flotante. En la representacin en punto fijo cada nmero se representa por n bits para la parte entera y m bits para la parte fraccionaria. De esta forma nos ahorramos el punto puesto que siempre estar colocado en la misma posicin (fijo). Su principal hndicap radica en que no todos los nmeros reales pueden representarse con este formato (depender de n y de m) y un mismo nmero en punto fijo puede representar a muchos nmeros reales. Se denomina rango de una representacin en punto fijo al subconjunto de los nmeros reales que se puede representar. Se denomina resolucin a la distancia mnima entre dos nmeros consecutivos en punto fijo. La resolucin est relacionada con el valor m de la representacin. La representacin en punto flotante consta de los campos: signo (un bit), mantisa y exponente. La mantisa es un nmero comprendido entre 0.5 y 1 y el exponente indica la potencia a la que hay que elevar la base (binaria) para que multiplicada por la mantisa nos reconstruya el nmero. Adems de eliminar el punto decimal, esta representacin aumenta el rango de representacin.

Existen muchos formatos de representacin en punto flotante. El ms usado es el estndar IEEE 754, del que hay tipos: formato IEEE 754 simple precisin, en el que la palabra es de 32 bits y formato IEEE 754 doble precisin en el que la palabra es de 64 bits. Difieren adems de en el tamao de la palabra en que se basan, en el nmero de bits que asignan a cada campo. Formato IEEE 754 simple precisin. La palabra de 32 bits se organiza en los siguientes campos: 1 bit para el signo 8 bits para exponente 23 bits para la mantisa

Formato IEEE 754 doble precisin. La palabra de 64 bits se organiza en los siguientes campos: 1 bit para el signo 11 bits para la exponente 52 bits para la mantisa

Por ltimo, el enlace a la pgina del padre del IEEE 754: William Kahan

http://www.etsimo.uniovi.es/~antonio/uned/ieee754/ejemplos.html

Bienvenido a mis Tutoras e n la UNED


Ejemplos de utilizacin IEEE 754 Ejemplo 1:
Csar Moreno Fernndez
El problema es el del examen del 3 de Febrero de 94. Se pide la representacin del N 53'2874 en formato normalizado IEEE 754 para coma flotante de 16 bit. 16 bit quiere decir, a no ser que especifiquen lo contrario, que se utilizan 1 bit para el signo, 8 para el exponente y 7 para la mantisa. El mismo resultado se obtiene con la precisin normal de 32 bits, eliminando los ltimos cuatro bytes de la derecha, que corresponden a los 16 bits extras de la mantisa. Pasos 1) Calcular el signo: En nuestro caso es + luego el bit de signo es 0 2) Normalizacin de la mantisa: 53'2874 = 110101'010010 (se haya dividiendo por dos el entero y quedndote con el resto y multiplicando por 2 la parte fraccionaria y quedndote con los resultados enteros) Como es el formato IEEE 754 hay un bit implcito. Esto quiere decir que vamos a correr la coma hasta el primer uno pero en lugar de dejarla a su izquierda como se hace en otros formatos lo dejamos a la derecha (especfico para IEEE 754). Dicho bit implcito no ser representado, con lo que ganamos un bit ms en la precisin de la mantisa.

Esto es: corremos coma 1'10101'010010 ^____ /

la hemos corrido +5 posiciones. Lo tendremos en cuenta para despus. el bit implcito no lo representamos en la mantisa, luego cogemos los 7 bits siguientes a la coma Mantisa: 1010101 3) El exponente: Se calcula en base al exceso 2^(n-1) -1 (especfico de IEEE 754) Entonces tenemos : +5 (de la coma corrida) + 2^(n1)-1=132= 10000100 (bin) Luego la representacin del nmero ser: 0100001001010101 _ \_______/\______/ Sig Expon Mantisa Ojo en algunos exmenes los posibles resultados los dan en Hex. As que lo pasas de binario a Hex. Luego la solucin es 4255 (hex)

Ejemplo 2:
Demetrio Quirs
Este problema es del examen del 26 de Enero de 1999 de ETC-1 (Modelo B - Pregunta 15): Obtener la representacin del nmero decimal (0.00015) en el formato normalizado IEEE754 para coma flotante de 16 bits (igual que el de 32, pero con una mantisa de 7 bits) A) 377B B) B77D C) B91D D) 377D

Empezaremos por calcular el equivalente de -0.00015 en formato m*2^e. El procedimiento que yo sigo es dividir el nmero por 2 elevado a 'lo que sea' hasta que el resultado est en la forma 1.xxxx, en este caso: -0.00015 / 2^-13 = 1.2288, con lo que podemos decir que 0.00015 = 1.2288 * 2^-13, con lo que ya tenemos la mantisa y el exponente.

Signo: negativo = 1 Exponente: 127 - 13 = 114 = 01110010 Mantisa: [1.]2288 = [1.]0011101 Con lo que el resultado es 1011 1001 0001 1101 B 9 1 D

Ejemplo 3:
Ramn Quiones Lozano
Cul es el error, en valor absoluto, que se comete al representar el nmero decimal 291.072 con el nmero en formato IEEE754 (16 bits) 4391? Primero pasamos el nmero hexadecimal a binario: 4391 hex = 0100 0011 1001 0001

colocndolos segun el formato IEEE754 signo 0 exponente 10000111 mantisa 0010001

y convirtindolo queda: signo (0) -> positivo exp. (10000111) = 135 (quitando el exceso a 127) 135-127 = 8 mantisa 1.0010001 (ojo al bit implcito) 1.0010001 decimal x 2^8 = 100100010 290 = = 290 en 1.072

As que el error =

291.072

Ejemplo 4:
Dethais
Convertir el nmero -2.5675e15 al formato IEEE 754 de 32 bits: 1 Se coge el n sin el menos, es decir positivo y escribimos lo siguiente: 2.5675*10^15 = 2^exponente Nos interesa despejar el "exponente". Cmo se hace esto? Con logaritmos: La expresin simplificada quedara: [log(2.5675)+15*log(10)]/log(2) = exponente Esto se hace con la calculadora y listo. Se puede hacer con logaritmos o con

logaritmos neperianos, lo que se prefiera. El exponente sale: exp = 51.189 (aproximamos al inmediatamente inferior, o sea al 51. Esto se hace siempre. Si fuera negativo, por ej. el -81.6, cogeramos el 82) Entonces, qu se ha conseguido con esto? Pues una aproximacin al n que nos dan. Para tener el n exacto entonces tendremos que hacer: 2.5675*10^15 = x*2^51 Calculamos 2^51 con la calculadora y nos sale: 2^51 = 2251799813685248 La x es el n que multiplica a nuestra "aprox. " para que d el n exacto (el 2.5675*10^15). Despejamos x y nos queda que: x = 2567500000000000/2^51=1.14019904629003576701 2 Ahora tenemos que pasar a binario el n 1.14. Lo bueno de este mtodo es que slo tienes que hallar la parte decimal del n (0.140199...) porque la parte entera es 1 y va a ser el bit implcito o el de ahorro para el IEEE754. 0.14019904629003576701(dec) = 0.00100011111001000001011(bin) Con esto se obtiene la mantisa, ahora calculamos el exponente. En la notacin IEEE754 el exponente se pone en exceso, por lo que: 2^(n-1)-1 + exponente = 2^7 - 1 + 51 = 127 + 51 = 178 3 Ahora se pasa todo a la notacin IEEE754: El primer bit es el de signo, como es negativo se pone un 1. Los siguientes 8 bits son los del exponente, por lo que ponemos el 178 en binario en esos 8 bits y el resto (23 bits) son la mantisa que recuerda que se pone con ahorro de bit, eso quiere decir que el primer bit significativo de la mantisa lo omitimos. Quedara as:

1 10110010 x00100011111001000001011 (en la x estara un 1, pero como es el bit implcito lo quitamos). Ahora agrupndolos de 4 bits en 4 bits tenemos el n en hexadecimal 1101 1001 0001 0001 1111 0010 0000 1011 D 9 1 1 F 2 0 B

Es decir: -2.5675e15 (dec) = D911F20B (ieee754)

Ejemplo 5:
Antonio Bello
Convertir el nmero -0.01 al formato IEEE 754 de 32 bits: 1 Se coge el n sin el menos, es decir positivo y escribimos lo siguiente: 0.01 = 2^exponente Nos interesa despejar el "exponente". Cmo se hace esto? Con logaritmos: La expresin simplificada quedara: log(0.01)/log(2) = exponente Esto se hace con la calculadora y listo. Se puede hacer con logaritmos o con logaritmos neperianos, lo que se prefiera. El exponente sale: exp = -6.643856... (aproximamos al inmediatamente inferior, o sea al 7. Esto se hace siempre. Si fuera positivo, por ej. el 81.6, cogeramos el 81) Entonces, qu se ha conseguido con esto? Pues una aproximacin al n que nos dan. Para tener el n exacto entonces tendremos que hacer: 0.01 = x*2^-7 Calculamos 2^-7 con la calculadora y nos sale: 2^-7 = 0.0078125

La x es el n que multiplica a nuestra "aprox. " para que d el n exacto (el 0.01). Despejamos x y nos queda que: x = 0.01/0.0078125=1.28 2 Ahora tenemos que pasar a binario el n 1.28. Lo bueno de este mtodo es que slo tienes que hallar la parte decimal del n (0.28) porque la parte entera es 1 y va a ser el bit implcito o el de ahorro para el IEEE754. 0.28(dec) = 0.0100011110101110000101000(bin) Con esto se obtiene la mantisa, ahora calculamos el exponente. En la notacin IEEE754 el exponente se pone en exceso, por lo que: 2^(n-1)-1 + exponente = 2^7 - 1 - 7 = 127 - 7 = 120 3 Ahora se pasa todo a la notacin IEEE754: El primer bit es el de signo, como es negativo se pone un 1. Los siguientes 8 bits son los del exponente, por lo que ponemos el 178 en binario en esos 8 bits y el resto (23 bits) son la mantisa que recuerda que se pone con ahorro de bit, eso quiere decir que el primer bit significativo de la mantisa lo omitimos. Quedara as: 1 01111000 x01000111101011100001010 (en la x estara un 1, pero como es el bit implcito lo quitamos). Ahora agrupndolos de 4 bits en 4 bits tenemos el n en hexadecimal 1011 1100 0010 0011 1101 0111 0000 1010 B C 2 3 D 7 0 A

Es decir: -0.01 (dec) = BC23D70A (ieee754)

Ejemplo 6:
Enrique Buitrn
Representar el nmero -480 a coma flotante IEEE754

Las opciones son: A) C3E0 B) C3A0 C) C3F0 D) C3B0 1/ Pasas 480 a binario: 480 = 111100000. 2/ Como la repr. IEEE754 tiene bit implcito, colocas la coma despus del primer 1, es decir: 1.11100000 Como hemos corrido la coma 8 posiciones hacia la izquierda, tenemos un exponente igual a 8. 3/ El exponente est en exceso, por lo que sumamos 2^7-1 + 8 = 135 4/ Lo representamos: El primer bit es el de signo, los 8 siguientes el exp, y los 7 restantes la mantisa. 1 10000111 1.1110000 ---> quitamos el bit implicito y ya nos queda la representacin: 1 10000111 1110000 = C 3 F 0

Ejemplo 7:
Francisco Javier Alonso lvarez
Convertir el nmero C19E0000 en formato IEEE754 en su equivalente decinmal: Primero paso hexadecimal a binario C19E0000 = 1100 0001 1001 1110 0000 0000 0000 0000 s (1) exponente (10000011) mantisa (001 1110 0000 0000 0000 0000) la formula es (-1)^s * 1,mantisa * 2^(e-127) s (1) significa, por tanto, signo negativo exponente 10000011 es 131, como se representa en exceso a 2^(n-1)-1 hay que restar 127 para volver a tener el exponente real, es por tanto 4. mantisa (hacia la derecha se van multiplicando los bits por 2^-1, 2^-2, 2^-3, 2^-4, ...)

0*0,5 0*0,25 1*0,125 1*0,0625 1*0,03125 1*0,015625 ----------0,234375 en decimal como est normalizada (se supone un 1 a la izquierda de la coma) es en realidad 1,234375. Todo junto: (-1)^1* 1,234375 * 2^4 = -1,234375*16 = -19,75

Ejemplo 8:
Antonio Bello
Se desea normalizar el nmero fraccionario N=1000011000111010 representado en signo-magnitud sobre una palabra de 16 bits. El byte ms significativo contiene la parte entera con signo,y el byte menos significativo la fraccionaria. Normalizarlo segn la IEEE754, para 16 bits. Es decir: Parte Entera: 10000110 (bin) = -6 Parte Fracc.: 00111010 (bin) = 0,2265625 Si utilizamos el conversor de la pgina http://www.etsimo.uniovi.es/~antonio/uned/ieee754/IE EE-754.html sabemos que la solucin tendra que ser: C0C7 (IEEE754) --1) Calcular el signo: Vamos ahora paso a paso. Lo primero es quitar el signo que ya sabemos que es negativo, entonces el nmero a normalizar sera: 110,00111010 2) Normalizacin de la mantisa: Como es el formato IEEE 754 hay un bit implcito. Esto quiere decir que vamos a correr la coma hasta el primer uno pero en lugar de dejarla a su

izquierda como se hace en otros formatos lo dejamos a la derecha (especfico para IEEE 754). Dicho bit implcito no ser representado, con lo que ganamos un bit ms en la precisin de la mantisa. Esto es: corremos coma 1,10,00111010 ^__|

la hemos corrido +2 posiciones. Lo tendremos en cuenta para despus. el bit implcito no lo representamos en la mantisa, luego cogemos los 7 bits siguientes a la coma Mantisa: 1000111 3) El exponente: se calcula en base al exceso 2^(n-1) -1 (especfico de IEEE 754) Entonces tenemos : +2 (de la coma corrida) + 2^(n1)-1=129= 10000001 (bin) Luego la representacin del nmero ser: 1 10000001 1000111 _ \______/ \_____/ Sig Expon Mantisa Ojo en algunos exmenes los posibles resultados los dan en Hex. As que lo pasas de binario a Hex. Luego la solucin es C0C7 (hex)

Ejemplo 9:
Antonio Bello
Expresar en formato binario de coma flotante de 32 bits, segun el estndar IEEE 754 el siguiente nmero decimal: -1023 * 10 ^ 24 1 Se coge el n sin el menos, es decir positivo y escribimos lo siguiente: -1023*10^-24 = -1.023*10^-21 = 2^exponente Nos interesa despejar el "exponente". Cmo se hace esto? Con logaritmos: La expresin simplificada quedara: [log(1.023)-21*log(10)]/log(2) = 69,713436319769198378217218273857

Esto se hace con la calculadora y listo. Se puede hacer con logaritmos o con logaritmos neperianos, lo que se prefiera. El exponente sale: exp = -69,72 (aproximamos al inmediatamente inferior, o sea al 70. Esto se hace siempre. Si fuera positiva, por ej. el 81.6, cogeramos el 81) Entonces, qu se ha conseguido con esto? Pues una aproximacin al n que nos dan. Para tener el n exacto entonces tendremos que hacer: -1.023*10^-21 = x * 2^-70 Calculamos 2^-70 con la calculadora y nos sale: 2^-70 = 8,4703294725430033906832250067964e-22 La x es el n que multiplica a nuestra "aprox. " para que d el n exacto (el -1.023*10^-21). Despejamos x y nos queda que: x = -1.023*10^-21/2^-70 = 1,207745227993911763402752 2 Ahora tenemos que pasar a binario el n 1.20774..... Lo bueno de este mtodo es que slo tienes que hallar la parte decimal del n (0.207745...) porque la parte entera es 1 y va a ser el bit implcito o el de ahorro para el IEEE754. 0.207745227993911763402752(dec) = 0.00110101001011101100101(bin) Con esto se obtiene la mantisa, ahora calculamos el exponente. En la notacin IEEE754 el exponente se pone en exceso, por lo que: 2^(n-1)-1 + exponente = 2^7 - 1 + -70 = 127 - 70 = 57 3 Ahora se pasa todo a la notacin IEEE754: El primer bit es el de signo, como es negativo se pone un 1. Los siguientes 8 bits son los del exponente, por lo que ponemos el 57 en binario en esos 8 bits y el resto (23 bits) son la mantisa que recuerda que se pone con ahorro

de bit, eso quiere decir que el primer bit significativo de la mantisa lo omitimos. Quedara as: 1 00111001 x 00110101001011101100101 (en la x estara un 1, pero como es el bit implcito lo quitamos). Ahora agrupndolos de 4 bits en 4 bits tenemos el n en hexadecimal 1001 1100 1001 1010 1001 0111 0110 0101 9 C 9 A 9 7 6 5

Es decir: -1023e-24 (dec) = 9C9A9765 (ieee754)

S-ar putea să vă placă și