Está en la página 1de 29

ICE1012

Aritmética Punto Flotante

Basado en el Capitulo 3 del texto: “Computer Organization and Design”, David Patterson y John Hennessy
Números de Punto Flotante
Por qué son necesarios los números de punto flotante?
Como los registros y la memoria de los computadores es limitada, no puedes
almacenar números con precisión infinita. No importa si usas fracciones binarias
o decimales: en algún momento tienes que cortar.
Pero ¿cuánta precisión se necesita? ¿Y dónde se necesita? ¿Cuántos dígitos
enteros y cuántos fraccionarios?

Para un ingeniero construyendo una autopista, no importa si tiene 10 metros o


10.001 metros de ancho. La diferencia es de 1 mm y no afecta a la autopista.

Sin embargo para alguien diseñando un microchip, 1 mm es una


diferencia enorme! Pero nunca tendrá que manejar distancias mayores de 10
cm.

Un físico necesita usar la velocidad de la luz (aprox 300.000.000 m/s) y


la constante de gravitación universal (aprox 0.0000000000667) juntas en el
mismo cálculo.
Números de Punto Flotante
Para satisfacer al ingeniero y al diseñador de circuitos integrados, el
formato tiene que ser preciso para números de órdenes de magnitud muy
diferentes. Sin embargo, solo se necesita precisión relativa.

Para satisfacer al físico, debe ser posible hacer cálculos que involucren
números de órdenes muy dispares.

Básicamente, tener un número fijo de dígitos enteros y fraccionarios no


es útil.

La solución inventada es un formato de almacenamiento que se llama


“punto flotante” , “floating point” en inglés.

El formato Punto Flotante, permite almacenar números extremadamente


grandes (ejemplo 10300) y extremadamente pequeños (ejemplo 10-305), en
un espacio limitado de registros en la CPU o de memoria del computador.
COMO FUNCIONAN LOS NUMEROS DE PUNTO FLOTANTE

 La idea es descomponer el número en dos partes:


Una mantisa (también llamada coeficiente o significando) que contiene
los dígitos del número. Mantisas negativas representan números
negativos.
Un exponente que indica dónde se coloca el punto decimal (o binario) en
relación al inicio de la mantisa. Exponentes negativos representan
números menores que uno.

 Este formato cumple todos los requisitos:


Puede representar números de órdenes de magnitud enormemente dispares
(limitado por la longitud del exponente).
Proporciona la misma precisión relativa para todos los órdenes (limitado por la
longitud de la mantisa).
Permite cálculos entre magnitudes: multiplicar un número muy grande y uno muy
pequeño conserva la precisión de ambos en el resultado.
Los números de coma flotante decimales normalmente se expresan en notación
científica con un punto explícito siempre entre el primer y el segundo dígitos. El
exponente o bien se escribe explícitamente incluyendo la base, o se usa
una e para separarlo de la mantisa.
Notación Punto Flotante o Coma Flotante
 Se usa para poder representar números reales
muy pequeños y muy grandes, en una cantidad fija
de bits (Ej: 32 bits, 64 bits)
 Notación científica = número x BaseExponente
 –2.34 × 1056 Normalizado (signo, 1 entero y decimales x 10Y)

 +0.002 × 10–4
sin normalizar
 +987.02 × 109
 En Binario, la notación científica Normalizada es:
 ±1.xxxxxxx2 × 2yyyy
 En C y en MIPS, existen variables tipo float (32
bits) y double (64 bits)
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Estándares en Punto Flotante
 Definido por Estandar IEEE 754 de1985
 Desarrollado para regular y normalizar las
divergencias de las representaciones de los
diferentes fabricantes de CPUs y Computadores
 Al normalizar, se pueden escribir programas que
sean portables entre diferentes plataformas.
 El Estandar IEEE 754 ya está universalmente
adoptado
 Las 2 representaciones más utilizadas son:
 Precisión simple (32-bits)
 Doble precisión (64-bits)
(También existe 128 y 256 bits, pero se usa muy poco)
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Aclaraciones y Conceptos de Punto Flotante
 Punto Flotante = Coma Flotante. Se llama asi, porque en
este formato, al igual que en la Notación Científica, la
coma se desplaza para dejar solamente un digito entero,
luego los decimales y luego la base exponente

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Aclaraciones y Conceptos de Punto Flotante
 Una gran ventaja del Estandar IEEE 754 de Punto
Flotante o Coma Flotante, es que permite almacenar en
32 bits y en 64 bits, números mucho mas pequeños y
mucho más grandes, que los números Enteros de 32 bits
y 64 bits.

 También permite a los Científicos, realizar operaciones


aritméticas que involucren al mismo tiempo números muy
grandes y muy pequeños, como por ejemplo, la masa del
Sol (1,98892 × 1030 kg ) y la carga de un electrón
(-1,602176487 × 10-19 culombs)

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Aclaraciones y Conceptos de Punto Flotante
 Números Enteros más grandes:
En 32 bits sin signo:
1111 1111 1111 1111 1111 1111 1111 1111
232 – 1 = 4.294.967.295 = 4,294967 E9 = 4,294967 x 109
En 32 bits con signo:
0111 1111 1111 1111 1111 1111 1111 1111
232-1 – 1 = 2.147.483.647 = 2,147484 E9 = 2,147484 x 109
 Números Reales más grandes en Punto Flotante:
En 32 bits (en PF siempre tienen signo):
± 2,0 × 2127 ≈ ± 3,4 × 1038
0 1111 1110 111 1111 1111 1111 1111 1111
1 1111 1110 111 1111 1111 1111 1111 1111
(mas adelante se explica como se obtiene este valor)
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Aclaraciones y Conceptos de Punto Flotante
 Números Enteros más grandes:
En 64 bits sin signo:
264 – 1 = 1,84467e19 = 1,84467 x 1019
En 64 bits con signo:
264-1 – 1 = 9,22337e18 = 9,22337 x 1018

 Números Reales más grandes en Punto Flotante:


En 64 bits (en PF siempre tienen signo):
± 2,0 × 21023 ≈ ± 1.8 × 10308
(mas adelante se explica como se obtiene este valor)

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Formato IEEE 754 para Punto Flotante

Bits Bit de Bits del Bits de la Número más Número más


Formato
totales Signo exponente Mantisa pequeño grande
Precisión
32 1 8 23 ~1.2 ⋅ 10-38 ~3.4 ⋅ 1038
simple
Precisión
64 1 11 52 ~2.2 ⋅ 10-308 ~1.8 ⋅ 10308
doble

Real en Decimal = (1 – 2*S) * (1 + Fraccion) * 2 (Exponente – Desplazamiento)

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Formato IEEE 754 para Punto Flotante
Real en Decimal = ± mantisa * 2exponente real

Real en Decimal = (1 – 2*S) * (1 + Fraccion) * 2 (Exponente – Desplazamiento)

 S: bit de signo (0  positivo 1  negativo)

 Mantisa normalizada: 1.0 ≤ |mantisa| < 2.0


 Siempre tiene un bit 1 a la izquierda, por lo tanto no necesita ser
representado explícitamente (es un bit escondido)
 La Mantisa es la Fracción + 1

 Representación Campo Exponente: exponente real +


desplazamiento
 Campo Exponente sin signo
 Precisión Simple: Desplazamiento = 127
 Precisión Doble: Desplazamiento = 1023

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Formato IEEE 754 para Punto Flotante

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Formato IEEE 754 para Punto Flotante

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Formato IEEE 754 para Punto Flotante

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Conversion de Punto Flotante a Decimal

ICEE1012 Sistemas Digitales II


Punto Flotante : Casos Especiales

ICEE1012 Sistemas Digitales II


RESUMEN: CÓMO CONVERTIR NUMEROS ENTEROS O REALES
A FORMATO PUNTO FLOTANTE (PF)
1) Si es positivo, Bit S=0. Si es negativo, Bit S=1
2) Convertir el Número completo a Binario. Si es un Entero es más fácil, la
parte decimal en binario es 0,000000000……
3) El exponente real = cantidad de posiciones que se debe mover la
coma, para obtener un número en binario normalizado de la forma
1,xxxxxxxxxxxxx
4) Si la coma se debe mover a la izquierda, el exponente real es positivo
5) Si la coma se debe mover a la derecha, el exponente real es negativo
6) El Campo Exponente = exponente real + desplazamiento
7) Desplazamiento = 127 en 32 Bits y 1023 en 64 Bits
8) La Mantisa = 1,xxxxxxxxxxxxx = 1 + Fracción
9) La Fracción = xxxxxxxxxxxxx
10) La Fracción tiene 23 Bits en Precisión Simple (32 Bits) y tiene 52 Bits
en Precisión Doble (64 Bits)
11) Asi se obtiene PF con Signo, Campo Exponente y Fracción. Ejemplo:

Signo Exponente Fracción


Ejemplo 1 (PF 32 bits)
Numero Real a Convertir a PF = - 12,7710
Bit de Signo = 1 (el número es negativo)
Parte Entera en Binario : 1210 = 11002
Parte Fraccionaria en Binario: 0,77 se multiplica por 2 sucesivamente y se
rescata el Dígito Entero (0 ó 1). Si el Dígito Entero es 1, se resta 1 y se vuelve
a multiplicar la fracción por 2, hasta que el resultado sea 0 o bien hasta que se
repita una serie periódica o bien hasta que se completen los 23 bits requeridos
para la mantisa.
Haciendo lo anterior: 0,7710 = 0,110001010001111011002
Por lo tanto 12,7710 = 1100,110001010001111011002
Hay que desplazar la coma 3 posiciones a la izquierda para tener 1,xxxxxxxxxx
 Exponente Real = +3
 Campo Exponente PF = 3 + 127 = 13010 = 100000102
Mantisa = 1,100110001010001111011002 = 1 + Fracción
Fracción = 0,100110001010001111011002 = 0,59625005722045910
Por lo tanto, la Representación de -12,7710 en PF 32 bits es :
1 10000010 100 1100 0101 0001 1110 1100 = 0xC14C51EC Hexa
Comprobación = - 1.596250057220459 x 23 = - 12,77 OK!

Real en Decimal = ± mantisa * 2 exponente real


Ejemplo 2 (PF 32 bits)
Numero Real a convertir = 152,534

Bit de Signo = 0
15210 = 100110002
0,53410 = 0,10001000101101
=> 152,53410 = 10011000,100010001011012
Normalizando = 1,001100010001000101101 x 27
Exponente Real = 7 => Campo Exponente PF = 7 + 127 = 134
13410 = 1000 01102
Mantisa = 1,0011000100010001011012 = 1 + Fracción
Fracción = 0,0011000100010001011012 = 0,191671848297119110
Por lo tanto, la Representación de 152,53410 en PF 32 bits es :
0 10000110 001 1000 1000 1000 1011 0100 = 0x431888B4 Hexa
Comprobación = + 1.1916718482971191 x 27 = 152,534 OK!

Real en Decimal = ± mantisa * 2 exponente real

ICEE1012 Sistemas Digitales II


Ejemplo 3 Punto Flotante

 ¿Qué número en decimal es representado por el


siguiente numero punto flotante de precisión
simple?
1 10000001 010 0000 0000 0000 0000 0000
S=1
 Fracción = 010000000000000000000002
 Exponente = 100000012 = 129
 x = (1- 2x1) × (1 + 0,012) × 2(129 – 127)
= (–1) × (1 + 0x20 + 0x2-1 + 0x2-2) × 22
= (–1) × 1.25 × 22
= – 5.0
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Rangos en Precisión Simple (32 Bits)
 Exponentes 0000 0000 y 1111 1111 son reservados
 Menor valor posible:
 Campo Exponente: 00000001
 exponente real = E – Desplazamiento = 1 – 127 = –126
 Fracción: 000…00 (23 ceros)  mantisa = 1 + F = 1.0
 ±1.0 × 2–126 ≈ ±1.2 × 10–38
 Mayor valor possible:
 Campo Exponente: 11111110
 exponente real = E – Desplazamiento = 254 – 127 =+127
 Fracción: 111…11 (23 unos)  mantisa = 1 + F ≈ 2.0
 ±2.0 × 2+127 ≈ ±3.4 × 10+38
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Rangos en Precisión Doble (64 Bits)
 Exponentes 00000000000 y 11111111111 son
reservados
 Menor valor posible:
 Exponente: 00000000001
 exponente real = 1 – 1023 = –1022
 Fracción: 000…00  mantisa = 1.0
 ±1.0 × 2–1022 ≈ ±2.2 × 10–308
 Mayor valor posible:
 Exponente: 11111111110
 exponente real = 2046 – 1023 = +1023
 Fracción: 111…11  mantisa ≈ 2.0
 ±2.0 × 2+1023 ≈ ±1.8 × 10+308
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Instrucciones de PF en MIPS
 El Hardware de PF es el Coprocesador 1 de la CPU
 Procesador adjunto que extiende el ISA
 Separa registros de PF
 32 registros precisión simple (32 bits): $f0, $f1, … $f31
 Se usan Pareados para doble precisión: $f0/$f1, $f2/$f3, …
 La versión 2 de los ISA de MIPS soportan 32 × 64-bit registros PF
 Las instrucciones PF funcionan solamente en
registros PF
 Los programas generalmente no realizan operaciones con
enteros en datos PF, o vice versa
 Más registros con un mínimo impacto en tamaño del
código
 Instrucciones de PF de carga y almacenamiento
 lwc1, ldc1, swc1, sdc1
 e.g., ldc1 $f8, 32($sp)
Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
Instrucciones de Punto Flotante en MIPS
 Aritmética simple precisión (32 bits)
 add.s, sub.s, mul.s, div.s
Ejemplo: add.s $f0, $f1, $f6

 Aritmética doble precisión (64 bits)


 add.d, sub.d, mul.d, div.d
Ejemplo: mul.d $f4, $f4, $f6

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Semestre Otoño 2014 ICEE1012 Sistemas Digitales II
¿Quien se preocupa de la exactitud en PF?

 Importante para codificación científica


 Pero para el uso del consumidor diario?
 “Mi saldo de la cuenta bancaria esta desbalanceada en
0.0002¢!”  Es muy poco, nadie se fija ni le importa.
 La “pifia” FDIV (división PF) del Intel Pentium
 El mercado espera exactitud
 Véase Colwell, The Pentium Chronicles

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Comentarios para Concluir
 Los Bits no tienen un significado inherente
 La interpretación depende de las instrucciones
aplicadas
 Representación de los Números en los
Computadores
 Rango y Precisión son Finitos, no ilimitados
 Los programas deben tener en cuenta esto

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II


Comentarios para Concluir
 Los ISAs soportan diferentes aritméticas
 Enteros con y sin signo
 Aproximación de Punto Flotante a los números reales
 Rangos acotados y precisión
 Las operaciones pueden producir “overflow”
 Los programas deben tener en cuenta esto
 ISA de MIPS
 Instrucciones del núcleo: 54 de uso mas frecuente
 100% of SPECINT, 97% of SPECFP
 Otras instrucciones: menos frecuentes

Semestre Otoño 2014 ICEE1012 Sistemas Digitales II

También podría gustarte