ARITMÉTICA EN PUNTO FLOTANTE



Documentos relacionados
Aritmética del computador. Departamento de Arquitectura de Computadores

Computación I Representación Interna Curso 2011

Representación de números en binario

1.1 Sistema de numeración binario

Representación en Punto Flotante

Representación de Números Reales

Aritmética finita y análisis de error

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles José Ignacio Martínez Torre Ángel Serrano Sánchez de León.

Representación de Datos. Representación de datos numéricos. Representación de datos caracteres. Representación de otros tipos de datos

Tema 4: Sistemas de Numeración. Codificación Binaria. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Aritmética Binaria. Luis Entrena, Celia López, Mario García, Enrique San Millán. Universidad Carlos III de Madrid

ELO311 Estructuras de Computadores Digitales. Números

Organización del Computador. Prof. Angela Di Serio

Sistemas de Numeración Operaciones - Códigos

Matemáticas para la Computación

by Tim Tran:

x

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

Representación de la Información

ELO311 Estructuras de Computadores Digitales. Unidad Aritmética

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

❷ Aritmética Binaria Entera

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Aritmética binaria

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

3.8 Construcción de una ALU básica

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.


LABORATORIO DE COMPUTADORAS

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

NÚMEROS NATURALES Y NÚMEROS ENTEROS

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

Estructura de Computadores

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Polinomios: Definición: Se llama polinomio en "x" de grado "n" a una expresión del tipo

TEMA 1 Representación de la información

Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Informática Bioingeniería

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

FORMATO BINARIO DE NÚMEROS NEGATIVOS

Lección 1. Representación de números

Solución: exp Febrero, primera semana. Paso 1º: Cálculo del campo exponente. Según el apartado a) del primer corolario: 53.

Los números racionales

Lección 4: Suma y resta de números racionales

Centro de Capacitación en Informática

Sumador: C o. C in. Sumador serie: Sumador paralelo con propagación de arrastre:

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Qué son los monomios?

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Buceando en los MCUs Freescale...

Bienvenido a mis Tutorías en la UNED

Electrónica Básica. Aritmética Binaria. Electrónica Digital. José Ramón Sendra Sendra Dpto. de Ingeniería Electrónica y Automática ULPGC

Cursada Primer Semestre 2015 Guía de Trabajos Prácticos Nro. 2

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

MATEMÁTICAS BÁSICAS UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN CLASES # 13 y #14

3.2 Operaciones aritmético-lógicas en Pascal

Unidad 1 números enteros 2º ESO

Operaciones Aritméticas en Números con Signo

Electrostática: ejercicios resueltos

Representación de números enteros: el convenio signo y magnitud

Estructuras de Datos y Algoritmos. Árboles de Expresión

Tema 2. La Información y su representación

Sistemas Numéricos Cambios de Base Errores

Capítulo 20: Bases de numeración

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos

Fórmulas y funciones

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Continuidad y ramas infinitas. El aumento A producido por cierta lupa viene dado por la siguiente ecuación: A = 2. lm í

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

JOSÉ PERAZA, FÍSICA 2 JOSÉ PERAZA, FÍSICA 2 JOSÉ PERAZA, FÍSICA 2 Energía Potencial eléctrica

TEMA 2 REPRESENTACIÓN BINARIA

REPASO NÚMEROS NATURALES Y NÚMEROS ENTEROS

Sebastián García Galán

Lección 12 Seguridad y criptografía. Universidad de Oviedo / Dpto. de Informática

EXPRESIONES ALGEBRAICAS. POLINOMIOS

La ventana de Microsoft Excel

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Clase 02: Representación de datos

Capítulo 4 Procesos con estructuras de repetición

PROYECTO DE LA REAL ACADEMIA DE CIENCIAS Estímulo del talento matemático

UD 1. Representación de la información

MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0

Geometría Tridimensional

NÚMEROS RACIONALES Y DECIMALES

Capitulo V Administración de memoria

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

OPERADORES: Maquinaria para realizar las instrucciones. Capítulo Tercero Fundamentos de Computadores Ingeniería de Telecomunicación

Sistemas de numeración, operaciones y códigos

Hoja1!C4. Hoja1!$C$4. Fila

ARITMÉTICA Y CODIFICACIÓN

SISTEMAS NUMERICOS Y ERRORES

QUÉ ES UN NÚMERO DECIMAL?

TEMA 2: Representación de la Información en las computadoras

mcd y mcm Máximo Común Divisor y Mínimo Común múltiplo José de Jesús Angel Angel jjaa@math.com.mx

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

1.3 Números racionales

Transcripción:

ARITMÉTICA EN PUNTO FLOTANTE AMPLIACIÓN DE ESTRUCTURA DE COMPUTADORES Daniel Mozos Muñoz Facultad de Informática 1

Aritmética en punto flotante 1. Representación de números en punto flotante 2. IEEE 754 3. Multiplicación y división en punto flotante 4. Suma y resta en punto flotante 2

Bibliografía 1.-"Computer arithmetic algorithms". I. Koren, Prentice Hall, 1993 2.-"Computer architecture. A quantitative approach". Hennessy & Patterson, Morgan Kaufmann, 1995. Apéndice A. 3.-"What every computer scientist should know about floating-point arithmetic", ACM Computing Surveys. V.23, n.1, pg.5-18. 3

Representación de nºs. en punto flotante La representación en punto flotante está basada en la notación científica: El punto decimal no se halla en una posición fija dentro de la secuencia de bits, sino que su posición se indica como una potencia de la base: signo exponente signo exponente + 6.02 10-23 + 1.01110 2-1101 mantisa base mantisa base En todo número en punto se flotante distinguen tres componentes: Signo: indica el signo del número (0= positivo, 1=negativo) Mantisa: contiene la magnitud del número (en binario puro) Exponente: contiene el valor de la potencia de la base (sesgado) La base queda implícita y es común a todos los números, la más usada es 2. s V ( e) El valor de la secuencia de bits ( s, e p-1,..., e 0, m q-1,..., m 0 ) es: ( 1) V ( m) 2 Dado que un mismo número puede tener varias representaciones (0.110 2 5 = 110 2 2 = 0.0110 2 6 ) los número suelen estar normalizados: un número está normalizado si tiene la forma 1.xx... 2 xx... (ó 0.1xx... 2 xx... ) dado que los números normalizados en base 2 tienen siempre un 1 a la izquierda, éste suele quedar implícito (pero debe ser tenido en cuenta al calcular el valor de la secuencia) 4

Representación de nºs. en punto flotante Sea el siguiente formato de punto flotante de 32 bits (base 2, normalizado) 1 bit 8 bits 23 bits s e m El rango de valores representable por cada uno de los campos es: Exponente (8 bits con sesgo de 128) : -128... +127 Mantisa (23 bits normalizados) : los valores binarios representables oscilan entre 1.00... y 1.11..., es decir entre 1 y 2-2 -23 (2-ulp) ( 1.11...1 = 10.00...0-0.0...1 ) underflow negativo underflow positivo overflow negativo números negativos expresables números positivos expresables overflow positivo -(2.0-2 -23 ) 2 127-1.0 2-128 0 1.0 2-128 (2.0-2 -23 ) 2 127 Obsérvese que la cantidad de números representables es 2 32 (igual que en punto fijo). Lo que permite la representación punto flotante es ampliar el rango representable a costa de aumentar el espacio entre números representable (un espacio que no es uniforme). -n 0 n 2 n 4 n 5

IEEE 754 2 formatos con signo explícito, representación sesgada del exponente (sesgo igual a (2 n-1-1=127), mantisa normalizada con un 1 implícito (1.M) y base 2. precisión simple (32 bits): 1 bit de signo, 8 de exponente, 23 de mantisa -1.0 2-126... (2-2 -23 ) 2 127 = 1.2 10-38.. 3.4 10 38 precisión doble (64 bits): 1 bit de signo, 11 de exponente, 52 de mantisa -1.0 2-1022... (2-2 -52 ) 2 1023 = 1.2 10-308.. 3.4 10 308 2 formatos ampliados para cálculos intermedios (43 y 79 bits). Codificaciones con significado especial Infinito (e=255, m=0): representan cualquier valor de la región de overflow NaN (Not-a-Number) (e=255, m>0): se obtienen como resultado de operaciones inválidas Número denormalizado (e=0, m>0): es un número sin normalizar cuyo bit implícito se supone que es 0. Al ser el exponente 0, permiten representar números en las regiones de underflow Cero (e=0, m=0): número no normalizado que representa al cero (en lugar de al 1) 4 modos de redondeo: Redondeo al más cercano (al par en caso de empate) Redondeo a más infinito (por exceso) Redondeo a menos infinito (por defecto) Redondeo a cero (truncamiento) Excepciones: Operación inválida: ±, 0, 0 0,, x mod 0, x cuando x<0, x= Inexacto: el resultado redondeado no coincide con el real Overflow y underflow División por cero 6

IEEE 754 4 modos de redondeo: Redondeo al más cercano (al par en caso de empate) Redondeo a más infinito (por exceso) Redondeo a menos infinito (por defecto) Redondeo a cero (truncamiento) El estándar exige que el resultado de las operaciones sea el mismo que se obtendría si se realizasen con precisión absoluta y después se redondease. Hacer la operación con precisión absoluta no tiene sentido pues se podrían necesitar operandos de mucha anchura. Al realizar una operación cuántos bits adicionales se necesitan para tener la precisión requerida? Un bit r para el redondeo Un bit s (sticky) para determinar cuando r=1 si el número está por encima de 0,5 Tipo de redondeo Signo del resultado 0 Signo del resultado<0 - +1 si (r or s) + +1 si (r or s) 0 Más próximo +1 si (r and p 0 ) or (r and s) +1 si (r and p 0 ) or (r and s) 7

Multiplicación en punto flotante Sean x e y dos números representados en punto flotante con valor: X= (-1) s1 *1.mant1*2 e1 Y= (-1) s2 *1.mant2*2 e2 El producto de estos dos números será otro número z con valor: Z=(-1) (s1 s2) *(1.mant1*1.mant2)*2 (e1+e2) El proceso de multiplicación tiene varios pasos: 1.- El signo del resultado es igual a la o-exclusiva de los signos de los operandos. 2.- La mantisa del resultado es igual al producto de las mantisas. Este producto es sin signo. Dado que los dos operandos están comprendidos entre 1 y 2 el resultado r será: 1 r < 4 Este paso puede requerir una normalización, mediante desplazamiento a la derecha y ajuste del exponente resultado. 3.- Si la mantisa resultado es del mismo tamaño que la de los operandos habrá que redondear. El redondeo puede implicar la necesidad de normalización posterior. 4.- El exponente del resultado es igual a la suma de los exponentes de los operandos. Considerando que usamos una representación sesgada del exponente, al hacer esta suma estamos sumando dos veces el sesgo, y por tanto habrá que restar este sesgo una vez para obtener el resultado correcto. 8

Multiplicación en punto flotante Pasos 2 y 3: Producto y redondeo Supongamos que usamos un multiplicador secuencial que es capaz de multiplicar dos números almacenados en dos registros de p bits A y B, y almacenar el resultado en otro registro P de p bits (parte más significativa del producto) y en A (parte menos significativa). P A x 0 x 1.x 2 x 3 x 4 x 5 g r s s s s Como el resultado final sólo se va a almacenar sobre el registro P, los bits contenidos en A nos servirán para redondear el resultado. Como el número está comprendido entre 1 y 3, x 0 puede ser tanto 1 como 0. En cada uno de estos casos el redondeo se realiza de modo distinto: Xo=0 => Desplazar P una posición a la izquierda, introduciendo el bit g de A como bit menos significativo de P. Los bit r y s (or de todos los s de A) nos sirven para redondear. X 0 =1 => El punto decimal se desplaza una posición a la izquierda, y se ajusta el exponente sumándole 1. Poner s= (r or s) y r = g. El redondeo siempre se hace de acuerdo a la tabla vista anteriormente. 9

Multiplicación en punto flotante Overflow y underflow El resultado redondeado es demasiado grande o pequeño para ser representado. Números denormales: El uso de este tipo de números complica el proceso de multiplicación. Si el resultado del cálculo del exponente en una multiplicación es menor que el exponente mínimo representable, puede ocurrir que el resultado sea un número denormalizado. En general si el exponente es menor que EXPmin, la mantisa se desplazará a la derecha hasta que el exponente alcance EXPmin. Si toda la mantisa se ha desplazado fuera, se ha producido un underflow. Al usar como factores de una multiplicación números denormales, se opera como si fuesen números normales, considerando que el exponente no se calcula de igual modo. 10

División en punto flotante Sean x e y dos números representados en punto flotante con valor: X= (-1) s1 *1.mant1*2 e1 Y= (-1) s2 *1.mant2*2 e2 La división de estos dos números será otro número z con valor: Z=(-1) (s1 s2) *(1.mant1/1.mant2)*2 (e1-e2) El proceso de división es similar al de multiplicación. Al hacer la resta de los exponentes hay que considerar que los sesgos se anularán y por tanto al resultado hay que sumarle el sesgo. Al operar con números normalizados, la mantisa del resultado será: 0,5< r < 2 Lo que implicará que la única normalización posible será mediante un desplazamiento a la izquierda. 11

Suma/resta en punto flotante alineamiento 6.144 10 2 0.06144 10 4 9.975 10 4 + 9.97500 10 4 normalización + 1.003644 10 5 0.000500 10 5 10.03644 10 4 operación 1.004 10 5 redondeo Método de suma/resta : Extraer signos, exponentes y magnitudes. Tratar operandos especiales (por ejemplo, alguno de ellos a cero) Desplazar la mantisa del número con exponente más pequeño a la derecha e 1 -e 2 bits Fijar el exponente del resultado al máximo de los exponentes Si la operación es suma y los signos son iguales, o si la operación es resta y los signos son diferentes, sumar las mantisas. En otro caso restarlas Detectar overflow de la mantisa Normalizar la mantisa, desplazándola a la derecha o a la izquierda hasta que el dígito más significativo esté delante del punto. Redondear el resultado y renormalizar la mantisa si es necesario. Corregir el exponente en función de los desplazamientos realizados sobre la mantisa. Detectar overflow o underflow del exponente 12

Suma/resta en punto flotante Redondeo El estándar exige que el resultado de las operaciones sea el mismo que se obtendría si se realizasen con precisión absoluta y después se redondease. Hacer la operación con precisión absoluta no tiene sentido pues se podrían necesitar operandos de mucha anchura. Al realizar una operación cuántos bits adicionales se necesitan para tener la precisión requerida? Suma 1 s1<2 ulp s2<2 Por tanto s=s1+s2 cumplirá: 1<s3<4 Si s3>2 se deberá normalizar desplazando a la derecha una posición, y ajustando el exponente. Redondeo: Caso 1: e1=e2 y s3>2 1.001000*2 3 1.110001*2 3 10.111001*2 3 1.0111001*2 4 Bit de redondeo 13

Suma/resta en punto flotante Suma Redondeo: Caso 2: e1-e2>0 Cálculo exacto Cálculo válido 1.001000*2 3 + 1.101001*2-1 1.001000*2 3 1.101001*2-1 1.0 0 1 0 0 0 *2 3 + 0.0 0 0 1 1 0 1 0 0 1*2 3 1.0 0 1 1 1 0 1 0 0 1*2 3 1.001000 *2 3 0.00011011*2 3 1.00111011*2 3 Bit de sticky Resultado 1.001111 *2 3 Bits de redondeo Resultado 1.001111 *2 3 Bit de redondeo 14

Suma/resta en punto flotante Resta: Caso 1: e1=e2 1 s i <2 s [0,1) Normalización No se necesitan bits adicionales. Caso 2: e1-e2=1 y s>0,5 1 s1<2 0.5 s2<1 ulp s<1.5 Cálculo exacto 1.0 0 1 1 1 1*2 3-1.0 0 1 0 0 1*2 2 1.001111*2 3-1.001001*2 3 0.000110*2 3 1.100000*2-1 Normalización Cálculo exacto 1.1 1 1 0 0 0*2 3-1.1 0 0 0 0 1*2 2 1. 0 0 1 1 1 1 *2 3-0. 1 0 0 1 0 0 1 *2 3 0.1 0 1 0 1 0 1 *2 3 1. 0 0 1 1 1 1 *2 3-0. 1 1 0 0 0 0 1 *2 3 1.0 0 0 1 1 1 1 *2 3 Resultado Bit de guarda 2 1.010101 *2 Resultado Bit de redondeo 2 1.001000 *2 15

Suma/resta en punto flotante Resta: Caso3: e1-e2>1 1 s1<2 ulp s2< 0.5 0,5 <s 2 Cálculo exacto Cálculo válido 1.0 0 0 0 0 0*2 3-1.1 1 0 0 0 1*2-1 1.0 0 0 0 0 0*2 3-1. 1 1 0 0 0 1*2-1 1. 0 0 0 0 0 0 *2 3-0. 0 0 0 1 1 1 0 0 0 1 *2 3 0.1 1 1 0 0 0 1 1 1 1*2 3 1. 0 0 0 0 0 0 *2 3-0. 0 0 0 1 1 1 0 0 1 *2 3 Bit de sticky 0. 1 1 1 0 0 0 1 1 1*2 3 Resultado 1. 110010 *2 3 Bits de redondeo Resultado 1. 110010 *2 3 Bit de redondeo Bit de guarda 16

Suma/resta en punto flotante Algoritmo: Sean e1 y e2 los exponentes de los dos operandos y m1, m2 las mantisas con el bit oculto. 1.- Si e1<e2 intercambiar los operandos. Esto garantiza que la diferencia de exponentes d=e1-e2 es siempre positiva. Poner como exponente tentativo del resultado e=e1. 2.- Si los signos de los operandos difieren, reemplazar m2 por C2(m2). 3.- Colocar m2 en un registro de p bits y desplazarlo a la derecha d posiciones (introduciendo unos si se ha complementado m2) para igualar los exponentes. De los bits desplazados fuera de p, poner el más significativo en un biestable g, el siguiente más significativo en un biestable r, y la or del resto de bits en un biestable s (sticky). 4.- Calcular m como la suma de m1 y el contenido de p (m2 modificado). Si (signo de a1 signo de a2) and (bit_mas_significativo(m)=1) and (no carry-out) entonces m es negativo. Reemplazar m con C2(m). Esto sólo puede ocurrir si d=0. 17

Suma/resta en punto flotante 5.- Normalización y ajuste de r y s : Caso 1. Si (signo de a1 = signo de a2) and (carry-out) desplazar m una posición a la derecha, introduciendo un 1. S=g or r or s. R=bit que sale de m al desplazar. Caso 2. Si no estamos en el caso 1, desplazar a la izquierda hasta que el número esté normalizado. (En el primer desplazamiento a la izquierda se introduce el contenido de g, en los restantes se introduce 0). Si no se ha necesitado desplazar => s=r or s r=g Si se ha desplazado una posición => r=r s= s Si se ha desplazado más de una posición => r=s=0 (esto sólo ocurre a1 y a2 tienen signos opuestos y el mismo exponente, por lo que la suma ha sido exacta). En ambos casos, ajustar el exponente adecuadamente. 6.- Redondear según la tabla que vimos en la multiplicación. Si se produce carry-out desplazar a la derecha y ajustar el exponente. 7.- Signo del resultado: Si (signo de a1 = signo de a2) este es el signo del resultado. Si (signo de a1 signo de a2) el signo depende de cuál de los dos operandos fuera negativo, de si en el paso 1 se intercambiaron y de si en el paso 4 s se reemplazó por su c2, como se muestra en la tabla. Intercambio C2 signo(a1) signo(a2) signo(resultado) si + - - si - + + no no + - + no no - + - no si + - - 18 no si - + +