Ampliación de Estructura de Computadores Curso 2010-2011 5.2 Aritmética en coma flotante. Introducción. Hasta ahora hemos visto algoritmos aritméticos para realizar operaciones sobre representaciones de números en coma fija. Todos ellos se pueden utilizar para las representaciones en coma flotante a condición de tener en cuenta el escalado, es decir, conocer la posición correcta del punto donde se localiza la separación entre la parte entera y la parte decimal. Pero en el computador, todo dato debe ser almacenado en un registro con un número finito de bits. Y la pregunta es ¿cómo almacenamos los datos en coma flotante?. La respuesta ha esta pregunta comienza preguntándonos primero si es necesaria la notación en coma flotante en los ordenadores, y si se implementa ¿con que características?. John Von Newmann rechazo incluir la aritmética en coma flotante en la máquina que construyo en Princentom. Y durante muchos años, cada fabricante y prácticamente cada computador utilizaban una aritmética distinta. El hardware de punto flotante se popularizó al comenzar a ser de utilidad hacia 1957 en el que una unidad decimal de punto flotante estuvo disponible en el IBM 650, y pronto las series IBM 704, 709, 7090, 7094, etc ..., ofrecieron hardware binario de punto flotante para simple y doble precisión. Como consecuencia se disponía ya de punto flotante en gran parte de computadores, pero cada implementación era diferente. Sobre 1976 John F. Palmer en Intel comienza el desarrollo de una aritmética de punto flotante para toda la línea de productos de Intel. La aparición del 8086 era inminente, y se estaba contemplando la opción de incorporar un coprocesador de punto flotante, el 8087, para el 8086. El coprocesador era un chip adicional que aceleraba una parte del trabajo del procesador, en este caso los cálculos en punto flotante. En aquellos tiempos las aritméticas de punto flotante eran ligeramente diferentes entre los grandes computadores pero una verdadera anarquía entre los microcomputadores, Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 en los que era necesario albergar una docena de aritméticas diversas en el firmware de la ROM o vía software. Robert G. Stewart, un ingeniero de la IEEE trató de controlar esta anarquía reinante y propuso que el IEEE diseñase un estándar aceptable de punto flotante. Las reuniones de este comité en referencia al punto flotante comenzaron a finales de 1977 con multitud de borradores que provenían de innumerables fuentes y se alargaron hasta 1985 cuando se hizo oficial el Standard 754 del IEEE para punto flotante binario, basado en el diseño inicial de Intel, pero algo simplificado. En 1980 Intel harta de esperar lanza el 8087 para su uso en el Ibm Pc, paralelamente Motorola anuncia en 1982 su 68881, utilizado en el Sun 3 y el Macintosh II, al mismo tiempo de estos lanzamientos el estándar finalmente apareció. Representación en Coma Flotante. Con esta notación exponencial seremos capaces representar un amplio rango de valores numéricos positivos y negativos centrados en el cero. Un número cualquiera X expresado en notación exponencial se puede escribir como: X = M * BE y si lo queremos representar en un registro de n bits, utilizaremos p bits para la mantisa M y q bits para el exponente E, además del un bit de signo s de la mantisa (del número en si). Siendo B la base del exponente y cumpliéndose que : n = p+q+1 La base B está implícita y no es necesario representarla, pues es la misma siempre. El nombre de coma flotante proviene de que al ajustar el exponente E se modifica la posición del punto decimal en la mantisa M. El diseñador de la aritmética debe conseguir un compromiso entre los tamaños de la mantisa y los tamaños del exponente, ya que al tener un número fijo de bits totales, si se toma un bit de un campo se pierde del otro y viceversa. Este compromiso se mueve entre la precisión y el rango que deseemos del número en punto flotante, es decir incrementar el tamaño de la mantisa enriquece el número de de bits para representar la mantisa, mientras que incrementar el tamaño del exponente incrementa el rango de números que pueden representarse. Ejemplo: Sean los siguientes números: 97600000000000000 = 9,76 * 10+16 = 0,976 * 10+17 0.000000000000976 = 9,76 * 10-16 = 0,976 * 10-15 para pasarlos a notación exponencial lo que hemos hecho es mover el punto decimal y utilizar el exponente para registrar la posición original de dicho punto. En un computador, los valores de M y E se suelen codificar de la siguiente forma: Mantisa. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 La mantisa M suele ser una representación en complemento a 2 (con signo). La precisión de las representaciones numéricas va a depender del número de bits que utilicemos para la mantisa. Por ello es fundamental que la mantisa tenga el mayor número de bits significativos, para lo cual se debe normalizar. La normalización de la mantisa en base 2 se consigue desplazando hacia la izquierda la mantisa hasta que el bit a la derecha del punto de la raíz sea uno (o el de la izquierda). Por ello, al colocar el primer uno a la derecha del punto decimal, tendremos que la magnitud de la mantisa en valor absoluto tiene un valor dentro del rango: ½ |m| 1 Ejemplo: Normalización de un número exponencial en base 2. 110.101 = 0.110101 * 211 = 1.10101 * 210 Exponente. Es un número de p bits que utiliza una representación exceso 2p-1 por las razones que vamos a exponer. a) El 0 se podría representar como M=0 y cualquier valor de exponente. Pero puede ocurrir que al realizar operaciones aritméticas, a causa de los errores de redondeo, apareciera algún 1 en posiciones menos significativas de la mantisa. Esto sugiere que el exponente más adecuado para representar el 0 es aquel que tiene el mayor valor negativo. De esta forma, se logra que los errores de redondeo de la mantisa, den un número tan próximo a cero como sea posible. b) La representación del 0 es una secuencia de 0`s tanto en la mantisa como en el exponente, de esta forma tenemos una única representación del cero. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Operaciones en coma flotante. A continuación vamos a recordar las cuatro operaciones básicas que se realizan sobre este tipo de representaciones. Suma y Resta. Cuando sumamos o restamos dos números en coma flotante se deben comparar los exponentes y hacerlos iguales, para lo cual hay que desplazar o alinear uno de ellos respecto al otro. Dados dos números en representación en coma flotante como x = mx 2xe y = my 2ye las operaciones de suma y resta se definen de la siguiente forma, suponiendo que xe < ye: x+y = (mx 2xe-ye + my ) 2ye = (mx + my 2ye-xe ) 2xe x–y = (mx 2xe-ye - my ) 2ye = (mx - my 2ye-xe ) 2xe Ejemplo: Sean x e y los siguientes números enteros x = 2560 y = 516000 en notación exponencial “normalizada” tendríamos x = 2.56 103 y = 5,16 105 Si quisiéramos realizar las operaciones de suma o de resta en la notación en coma fija haríamos lo siguiente: x+y ==> x-y ==> 2560 + 516000 518560 que seria 5,1856 105 (2560 - 516000) = -513440 que seria 5,13440 105 Y para realizar estas operaciones en representación en coma flotante deberíamos aplicar las fórmulas vistas con anterioridad: x+y ==> x+y = 2.56 103 + 5,16 105 (2.56 103-5 + 5,16) 105 (2,56 10-2 + 5,16) 105 (0,0256 + 5,16) 105 (5,1825) 105 x-y ==> x-y = 2.56 103 - 5,16 105 (2.56 103-5 - 5,16) 105 (2,56 10-2 - 5,16) 105 (0,0256 - 5,16) 105 (-5,13440) 105 Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Problema: Sean x e y los siguientes números enteros x = 737 y = 267337 Pásalos a notación exponencial y calcula Expresa el resultado de forma normalizada y-x = Ejemplo: Sean x e y los siguientes números en base-2 x = 11000 y = 1010000 Los pasamos a notación exponencial y realizamos las operaciones: X+Y: X = 1,1 * 2100 X+Y = = = = Y x+y y x-y. = 1,01 * 2110 (1.1 * 2100-110 + 1.01) * 2110 = (1.1 * 2-10 + 1.01) * 2110 = (0,011 + 1,01) * 2110 = 1,101 * 2110 0,011 + 1,01 1,101 X-Y: No olvidaros de comprobar siempre el resultado. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Problema: Sean x e y los siguientes números en base-2 x = 1110101 y = 11101 Pasarlos a notación exponencial y realiza las operaciones: x+y, y-x y x-y. Importante en este caso: expresa el resultado de forma normalizada. Las operaciones de suma y resta, así como la multiplicación y la división pueden producir reboses, por producir resultados demasiado grandes (desbordamientos) o demasiado pequeños (subdesbordamientos). Hay cuatro tipos de reposes posibles: 1) Desbordamiento del exponente. Es cuando un exponente positivo E excede de su valor máximo permitido. En algunos ordenadores el número X se representa entonces como + o - . 2) Subdesbordamiento del exponente. Es cuando un exponente negativo E excede de su valor máximo permitido. Esto significa que el numero X es demasiado pequeño y se puede considerar como igual a 0. 3) Subdesbordamiento de mantisa. En el proceso de alineación de las mantisas, si los dígitos se desplazan hacia la derecha más allá de su bit menos significativo, lo que sucede es que se pierden y es como redondear el resultado. 4) Desbordamiento de mantisa. En la suma de dos mantisas del mismo signo se puede producir un arrastre del bit más significativo. Esto se soluciona mediante la renormalización, desplazando a la derecha un bit la mantisa y ajustando el exponente. La precisión de la representación en coma flotante no posee la misma precisión en toda la recta Real. En la figura siguiente se puede apreciar como podemos representar con más precisión o Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 con mayor densidad de números, al acercarnos al cero. Y perdemos precisión al alejarnos hacia más o menos infinito. Algoritmo de la suma-resta. Por lo visto con anterioridad, para realizar la suma (resta) de dos operandos en representación coma flotante debemos realizar previamente la separación de los exponentes y de las mantisas para su tratamiento posterior, y después realizar esta serie de pasos: 1. Seleccionar el número con menor exponente y desplazar su mantisa a la derecha tantas veces como indique la diferencia en módulo de los exponentes. 2. Hacer que el exponente resultado sea igual al mayor de los exponentes. 3. Realización de las operaciones de suma o resta con las mantisas. 4. Normalización del resultado. Una vez realizada la suma se debe normalizar desplazando los bits de la mantisa hacia la izquierda o la derecha con lo cual habrá que cambiar el valor del exponente. 5. Comprobar las condiciones de rebose. Un diagrama de flujo del algoritmo se muestra en la figura de la página siguiente. Se utilizan los mismos registros que para el caso de la suma resta, y el resultado final que almacenado en los registros A y E. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Vicente Arnau Llombart Curso 2010-2011 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Multiplicación y división. La multiplicación y la división en punto flotante son más sencillas de realizar. Vemos la formula que nos permitirá realizar estas operaciones manualmente: Ejemplo: x*y (mx * my ) 2xe+ye x (mx y X = 256 my ) 2xe-ye Y = 51600 Realizar X*Y y X/Y con notación exponencial y comprobar el resultado. Ejemplo: Dados X= 11000 e Y=1010000 realizar X*Y y X/Y con notación exponencial y comprobar el resultado. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Ejercicio de examen: Tenemos dos números reales cuyos valores son X = (120)10 e Y= (-0.6875)10 Se pide: a) Dar su expresión en binario (base-2). b) Pasar a notación exponencial normalizada. c) Realizar las operaciones X*Y y X/Y usando la notación exponencial. Algoritmo de multiplicación y división. Este algoritmo está fundamentado en el seguimiento de cuatro pasos: 1. Realizar la Suma-Resta de los exponentes. 2. Multiplicar-dividir las mantisas y determinar el signo del resultado. 3. Normalizar el valor resultado, si es necesario. 4. Comprobar las condiciones de rebose. Un posible algoritmo para realizar estas operaciones se muestra en las figuras que se muestran en las transparencias, en el cual el resultado final quedará almacenado en los registros A y E. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Aritmética en Coma Flotante en el computador. Las Unidades aritméticas en como flotante de los computadores se construyen utilizando dos unidades aritméticas en como fija: - Unidad de tratamiento de mantisas. - Unidad de tratamiento de exponente. Mas una Unidad de Control que conectará ambas unidades y que se encarga entre otras cosas de normalizar adecuadamente el resultado. En todos los computadores se ha normalizado la notación en coma flotante al estándar IEEE-754. Este estándar posee dos formatos posibles de representación o almacenamiento de la información, aunque internamente puede utilizarse formatos con más bits para una mayor precisión. IEEE 754 El IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) ha creado un estándar para la presentación de números en coma flotante. Este estándar especifica como deben representarse los números en coma flotante con simple precisión (32 bits) o doble precisión (64 bits), y también cómo deben realizarse las operaciones aritméticas con ellos. Simple Precisión El estándar IEEE-754 para la representación en simple precisión de números en coma flotante exige una cadena de 32 bits. El primer bit es el bit de signo (S), los siguientes 8 son los bits del exponente (E) y los restantes 23 son la mantisa (M): Al estar el dato normalizado, es decir expresado siempre como “1,…” (“uno coma algo más”), el 1 de la parte entera no se almacena, aunque nunca debemos olvidarnos que existe. El signo de la mantisa está representado en el bit 31. El campo del exponente (ne) dispone de 8 bits, empezando por el bit 23 hasta el bit 30. El campo de mantisa (nm) dispone de 23 bits, empezando por el bit 0 hasta el bit 22. Considerando el valor 1 implícito (oculto) para el primer bit de los números binarios normalizados la precisión del campo de la mantisa es de 24 bits. El valor del desplazamiento es de 127, es decir el exceso C = 2 7-1 = 127. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Estos tamaños de exponente y mantisa dan a la aritmética del computador un rango que cubre fracciones tan pequeñas como 2.0 diez x 10 -38 y números tan grandes como 2.0 diez x 10 38. El valor V representado por esta cadena puede ser determinado como sigue: Si E=255 y M es no nulo, entonces V=NaN ("Not a number") Si E=255 y M es cero y S es 1, entonces V=-Infinito Si E=255 y M es cero y S es 0, entonces V=Infinito Si 0<E<255 entonces V=(-1)**S * 2 ** (E-127) * (1.M) donde "1.M" se emplea para representar el número binario creado por la anteposición a M de un 1 y un punto binario. Si E=0 y M es no nulo, entonces V=(-1)**S * 2 ** (-126) * (0.M) Estos son valores "sin normalizar". Si E=0 y M es cero y S es 1, entonces V=-0 Si E=0 y M es cero y S es 0, entonces V=0 En particular, 0 00000000 00000000000000000000000 = 0 1 00000000 00000000000000000000000 = -0 0 11111111 00000000000000000000000 = Infinito 1 11111111 00000000000000000000000 = -Infinito 0 11111111 00000100000000000000000 = NaN 1 11111111 00100010001001010101010 = NaN 0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2 0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5 1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5 0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126) 0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127) 0 00000000 00000000000000000000001 = +1 * 2**(-126) * 0.00000000000000000000001 = 2**(-149) (valor positivo más pequeño) Doble precisión El estándar IEEE-754 para la representación en doble precisión de números en coma flotante exige una cadena de 64 bits. El primer bit es el bit de signo (S), los siguientes 11 son los bits del exponente (E) y los restantes 52 son la mantisa (M): El signo de la mantisa está representado en el bit 63. El campo del exponente (ne) dispone de 11 bits, empezando por el bit 52 hasta el bit 62. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 El campo de mantisa (nm) dispone de 52 bits, empezando por el bit 0 hasta el bit 51. Considerando el valor 1 implícito (oculto) para el primer bit de los números binarios normalizados la precisión del campo de la mantisa es de 53 bits. El valor del desplazamiento es de 1023,es decir el exceso C = 2 10- 1 = 1023. Estos tamaños de exponente y mantisa dan a la aritmética del computador un rango que cubre fracciones tan pequeñas como 2.0 diez x 10 -308 y números tan grandes como 2.0 diez x 10 308. El valor V representado por esta cadena puede ser determinado como sigue: Si E=2047 y M es no nulo, entonces V=NaN ("Not a number") Si E=2047 y M es cero y S es 1, entonces V=-Infinito Si E=2047 y M es cero y S es 0, entonces V=Infinito Si 0<E<2047 entonces V=(-1)**S * 2 ** (E-1023) * (1.M) donde "1.M" se emplea para representar el número binario creado por la anteposición a M de un 1 y un punto binario. Si E=0 y M es no nulo, entonces V=(-1)**S * 2 ** (-1022) * (0.M) Estos son valores "sin normalizar". Si E=0 y M es cero y S es 1, entonces V=-0 Si E=0 y M es cero y S es 0, entonces V=0 Precisión Extendida Formato de precisión extendida en IEEE754. Este formato suele reservarse normalmente para almacenar resultados intermedios, su longitud extra le permite proteger los resultados finales del redondeo y los cálculos intermedios del overflow y underflow. El bit implícito de los anteriores formatos aquí no se contempla, ya que se encuentra físicamente presente en la mantisa. Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Vicente Arnau Llombart Curso 2010-2011 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 A = 0,11010001 * 210100 según el IEEE-754 Problema: Representar el numero simple precisión. A = 0,11010001 * 210100 = 1,1010001 * 210011 El exponente más es sesgo(127) vale: 00010011 +01111111 10010010 0 entonces el número vale: 100 1001 0 4 9 101 0001 0000 0000 0000 0000 5 1 0 0 0 0 Problema: Representar el numero A = 0,11010001 * 210100 según el IEEE-754 doble precisión, y da en hexadecimal el resultado. Problema: Representar el numero A = -0,11010001 * 2-10100 según el IEEE-754 simple precisión. Y luego en Doble precisión. Comprobar si es válida la fórmula para pasar de simple a doble precisión (tengo mis dudas). Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Redondeo. Cuando tenemos un valor no representable, se aproxima a uno de estos 4 casos: - Redondeo hacia el valor más próximo. - Redondeo hacia +∞ - Redondeo hacia -∞ - Redondeo hacia 0. Bit de guarda. Cualquier operación aritmética se realiza sobre formatos ampliados. De esta forma ganamos precisión en la realización de las operaciones aritméticas. Veamos un ejemplo de la importancia de utilizar representaciones ampliadas, o bits de guarda: Restamos dos números muy próximos y con mantisa de 24 bits. X = 1,00 ... 00 * 21 Y = 1,11 ... 11 * 2o Sin Bits de guarda: X-Y X: 1,00 . . . 00 * 21 Y: - 0,11 . . . 11 * 21 0,00 . . . 01 * 21 (mantisa un bit a la derecha) Normalizado 1,00 . . . * 2-22 Con Bits de guarda (4 bits de guarda): X-Y X: 1,00 . . . 00 0000 * 21 Y: - 0,11 . . . 11 1000 * 21 0,00 . . . 00 1000 * 21 Normalizado 1,00 . . . * 2-23 Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 Conversión de SFP a DFP. La conversión de simple a doble precisión de realiza siguiendo el esquema: 17.25 = 10001.01 = 1.000101 * 2100 (17.25)SP (17.25)SP = 0 = 100 0001 1 Ox 4 1 exp = 10000011 000 1010 0000 0000 0000 0000 8 A 0 0 0 0 En doble precisión: 17.25 = 10001.01 = 1.000101 * 2100 00000000100 + 01111111111 10000000011 exp = (17.25)DP = 0 (17.25)DP Ox = 100 0000 0011 4 0 3 0001 0100 0000 1 4 Ejercicio: Hallar la representación del número decimal 754 S.P. y después pasarlo a doble precisión. Ejercicio: Hallar la suma de los números . . . 0000 0 0 0 0 0 0 0 0 0 0 0 A= (-255)10 según el IEEE- X=0x418A0000 + Y=0xCA4F0000 Ejercicio para el martes 10-X-2009: Hallar la suma de los números X=0x418A0000 + Y=0xC44F0000 Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 P // Realizar la suma de X e Y usando la representación IEEE-754 y el algoritmo visto en clase. X = 24 = ( 11000)2 = 1.1 * 2100 Y = 80 = (1010000)2 = 1.01 * 2110 X = 0 10000011 10000000000 ... 00 Y = 0 10000101 010000000000 ... 00 Inicio Registros: E1 = 00000100 E2 = 00000110 A = 1.1 M = 1.01 Paso 1: E = E1-E2 = 100 – 110 = -10 pero es mejor así, usando Complemento-2: E = 00000100 – 00000110 = 11111110 E<0 si (-2)C2 >>A= 0.11 E = E + 1 = -10 + 1 = -1 E = 11111110+(1) = 11111110 + 00000001 = 11111111 E<0 si >>A= 0.011 E = E + 1 = -1 + 1 = 0 E = 11111111+(1) = 11111111 + 00000001 = 00000000 E<0 no Paso 2: E>0 no E = Max (E1, E2) = 110 Sumo el Sesgo: E = 00000110 + 01111111 = 10000101 Paso 3: A=A+M A : A Rebose? NO NO A = 0 ? A Normalizado ??? 0.011 + 1.01 1.101 SI FIN : X+Y = 0 10000101 1010000000 . . . 00 X+Y = 0x42D00000 Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 P // Realizar el producto de X e Y usando la representación IEEE-754 y el algoritmo visto en clase. X = 24 = ( 11000)2 = 1.1 * 2100 Y = 80 = (1010000)2 = 1.01 * 2110 X = 0 10000011 100000000000 ... 00 Y = 0 10000101 010000000000 ... 00 Inicio Registros: Paso 1: E1 = 10000011 – sesgo = 00000100 E2 = 10000101 – sesgo = 00000110 A = 1.1 M = 1.01 E = E1+E2 = 00000100 + 00000110 = 00001010 E + sesgo = 00001010 + 01111111 = 10001001 Paso 2: A = A * M 1.1 * 1.01 11 00 11 1.111 E Rebose ? NO A = 0 ? NO A Normalizado ? SI FIN : X*Y = 0 10001001 1110000000 ... 00 X * Y = 0x44F00000 Comprobación: X * Y = 24 * 80 = 1920 = (11110000000)2 = 1.111 * 21010 Exp + sesgo = 00001010 + 01111111 = 10001001 1920 = Vicente Arnau Llombart 0 10001001 1110000000 ... 00 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 P // Realizar el cociente entre Y / X usando la representación IEEE-754 y el algoritmo visto en clase. X = 24 = ( 11000)2 = 1.10 * 2100 Y = 80 = (1010000)2 = 1.01 * 2110 X = 0 10000011 100000000000 ... 00 Y = 0 10000101 010000000000 ... 00 E1 = 10000011 – sesgo = 00000100 E2 = 10000101 – sesgo = 00000110 Inicio Registros: A = 1.01 M = 1.1 E = E1-E2 = 110 - 100 = 010 pero es mejor hacerlo de esta forma: Paso 1: E = E1-E2 = 00000110 - 00000100 = 00000010 (todo en C2) E + sesgo = 00000010 + 01111111 = 10000001 Paso 2: A=A/M 1.01 1.1 10 0 0.1101010101... 1 00 ... E Rebose ? NO A=0? NO A Normalizado ¿? NO : A = 1.10101010101010... E = E – 1 = 10000000 FIN : Y/X= 0 10000000 10101010101010101010101 Y/X = 0x40555555 Vicente Arnau Llombart 12/11/2010 Ampliación de Estructura de Computadores Curso 2010-2011 PROBLEMAS PARA CASA: P1) ¿Qué número decimal es el A=0x4066C7E140000000? P2) Representar el número X = 0.6875 en formato SP y DP según la norma IEEE-754 y también el número X = -7,75 pero solo en formato SP. Solución: en SP es 0x3F300000 Solución: en SP es C0F80000 P3) Multiplicar las representaciones de X e Y según IEEE-754 en Simple Precisión. X = -7.75 e Y = 0.6875 P4) Dividir las representaciones de X e Y según IEEE-754: Y / X. X = 7.75 e Y = 255.5 P5) ¿Qué número es el X=0x4066C7E140000000 si representa un real en D.P. según la IEEE754?. ¿Qué número es el Y=0x40F80000 si representa un real en S.P. según la IEEE-754?. Pasa el segundo número a Doble precisión y realiza todas las operaciones aritméticas posibles sobre estos números, es decir: ¿X+Y, X-Y, Y-X, X*Y, X/Y, Y/X?, usando el algoritmo expresado en el diagrama de bloques. P6) Representar el número X = 1785 en formato SP según la norma IEEE-754. Resultado en S.P : 0x44DF2000 Resultado en D. P. : 0x409BE4000000000 P7) Representar el número X = -56.320 en formato S.P. y D.P. según la norma IEEE-754. Resultado en S. P. : 0xC26147AE Resultado en D. P. : 0xC04C28F5C28F5C29 P8) Suma las representaciones de X e Y según IEEE-754. X = 271 e Y = 103 P9) Resta las representaciones de X e Y según IEEE-754: X – Y. X = 170 e Y = 176 P10) Multiplicar y divide las representaciones de X e Y según IEEE-754: X * Y X/Y. X = 3075.59375 e Y = -0.0234375 P11) Representar el número X = -72.084228515625 en formato SP y DP según la norma IEEE-754. P12) Multiplicar las representaciones de X e Y según IEEE-754: X * Y X = 5.38 e Y = -2.71 X/Y. P13) Expresa el número X=0.0035 en Simple precisión según el IEEE-764. Vicente Arnau Llombart 12/11/2010