Ampliación de Estructura de Computadores · hizo oficial el Standard 754 del IEEE para punto...

21
Ampliación de Estructura de Computadores Curso 2010-2011 Vicente Arnau Llombart 12/11/2010 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,

Transcript of Ampliación de Estructura de Computadores · hizo oficial el Standard 754 del IEEE para punto...

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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,

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

En un computador, los valores de M y E se suelen codificar de la siguiente forma:

Mantisa.

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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

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.

Ejemplo: Normalización de un número exponencial en base 2.

110.101 = 0.110101 * 211 = 1.10101 * 2

10

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 10

5

Si quisiéramos realizar las operaciones de suma o de resta en

la notación en coma fija haríamos lo siguiente:

x+y ==> 2560

+ 516000

518560 que seria 5,1856 105

x-y ==> (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 10

5

(2.56 103-5 + 5,16) 10

5

(2,56 10-2 + 5,16) 10

5

(0,0256 + 5,16) 105

(5,1825) 105

x-y ==> x-y = 2.56 103 - 5,16 10

5

(2.56 103-5 - 5,16) 10

5

(2,56 10-2 - 5,16) 10

5

(0,0256 - 5,16) 105

(-5,13440) 105

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 y x-y.

X+Y: X = 1,1 * 2100 Y = 1,01 * 2110

X+Y = (1.1 * 2100-110

+ 1.01) * 2110 =

= (1.1 * 2-10

+ 1.01) * 2110 =

= (0,011 + 1,01) * 2110

= 0,011

= 1,101 * 2110

+ 1,01

1,101

X-Y:

No olvidaros de comprobar siempre el resultado.

Problema: Sean x e y los siguientes números enteros

x = 737 y = 267337

Pásalos a notación exponencial y calcula y-x =

Expresa el resultado de forma normalizada

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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:

x * y (mx * my ) 2xe+ye

x y (mx my ) 2xe-ye

Ejemplo: X = 256 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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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.

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

Problema: Representar el numero A = 0,11010001 * 210100 según el IEEE-754

simple precisión.

A = 0,11010001 * 210100

= 1,1010001 * 210011

El exponente más es sesgo(127) vale:

00010011

+01111111

10010010 entonces el número vale:

0 100 1001 0 101 0001 0000 0000 0000 0000

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

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 (mantisa un bit a la derecha)

0,00 . . . 01 * 21

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

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 exp = 10000011

(17.25)SP =

(17.25)SP = Ox 4 1 8 A 0 0 0 0

En doble precisión:

17.25 = 10001.01 = 1.000101 * 2100

00000000100

exp = + 01111111111

10000000011

(17.25)DP =

(17.25)DP = Ox 4 0 3 1 4 0 0 0 0 0 0 0 0 0 0 0

0 100 0001 1 000 1010 0000 0000 0000 0000

0 100 0000 0011 0001 0100 0000 . . . 0000

Ejercicio: Hallar la representación del número decimal A= (-255)10 según el IEEE-

754 S.P. y después pasarlo a doble precisión.

Ejercicio para el martes 10-X-2009: Hallar la suma de los números

X=0x418A0000 + Y=0xC44F0000

Ejercicio: Hallar la suma de los números X=0x418A0000 + Y=0xCA4F0000

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 * 2

100

Y = 80 = (1010000)2 = 1.01 * 2110

X = 0 10000011 10000000000 ... 00

Y = 0 10000101 010000000000 ... 00

Inicio Registros: E1 = 00000100 A = 1.1

E2 = 00000110 M = 1.01

Paso 1: E = E1-E2 = 100 – 110 = -10 pero es mejor así, usando Complemento-2:

E = 00000100 – 00000110 = 11111110 (-2)C2

E<0 si >>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 E>0 no

Paso 2: E = Max (E1, E2) = 110

Sumo el Sesgo: E = 00000110 + 01111111 = 10000101

Paso 3: A = A + M

A : 0.011

+ 1.01

1.101

A Rebose? NO

A = 0 ? NO

A Normalizado ??? SI

FIN :

X+Y = 0 10000101 1010000000 . . . 00

X+Y = 0x42D00000

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 * 2

100

Y = 80 = (1010000)2 = 1.01 * 2110

X = 0 10000011 100000000000 ... 00

Y = 0 10000101 010000000000 ... 00

Inicio Registros: E1 = 10000011 – sesgo = 00000100 A = 1.1

E2 = 10000101 – sesgo = 00000110 M = 1.01

Paso 1: 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 = 0 10001001 1110000000 ... 00

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 * 2

100

Y = 80 = (1010000)2 = 1.01 * 2110

X = 0 10000011 100000000000 ... 00

Y = 0 10000101 010000000000 ... 00

Inicio Registros: E1 = 10000011 – sesgo = 00000100 A = 1.01

E2 = 10000101 – sesgo = 00000110 M = 1.1

Paso 1: E = E1-E2 = 110 - 100 = 010 pero es mejor hacerlo de esta forma:

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

Ampliación de Estructura de Computadores Curso 2010-2011

Vicente Arnau Llombart 12/11/2010

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 IEEE-

754?.

¿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/Y.

X = 5.38 e Y = -2.71

P13) Expresa el número X=0.0035 en Simple precisión según el IEEE-764.