Professional Documents
Culture Documents
DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
15
6
#define DBL_MANT_DIG
#define FLT_MANT_DIG
#define DBL_EPSILON
2.2204460492503131E-16
/* el mnimo espacio entre dos nmeros doubles representables */
#define FLT_EPSILON
1.19209290E-07F
/* el mnimo espacio entre dos nmeros float representables. Equivale a 2-23 */
/* menores positivos normales */
#define DBL_MIN
2.2250738585072014E-308 /* mdulo double menor*/
#define FLT_MIN
1.17549435E-38F
/* mdulo float menor. Note la F.*/
Ejemplos.
a) Convertir N= 0,75 a representacin interna.
-0,75 10 = -( 0.5 +0.25) 10 = -( 2-1 + 2-2 ) 10 = -0.11 2 y normalizado: -1.1 * 2 1
Entonces: S=1, ya que el signo es negativo.
M = 100 0000 0000 0000 0000 0000; debe recordarse que el primer uno no se coloca en la
representacin interna de la mantisa. Esta es una fraccin pura.
Ee= -1
Ei = Ee + 127 = -1 + 127 = 12610 = 0111 11102
Resulta N = 1011 1111 0100 0000 0000 0000 0000 00002 = 0xBF400000
La conversin no es tan simple, si el nmero no puede descomponerse en sumas de
potencias negativas de dos, menores que 23. O si el nmero es irracional, o si es una
fraccin peridica. En estos casos se aplica divisiones sucesivas.
La representacin de N= 1/3 en precisin simple
+ 1.010101010101010101010102 *2-2 = 0.3333333134651184
23-07-2004
175
Existe un error por truncamiento, ya que no es posible expresar en forma exacta con 23 bits
para la mantisa.
En doble precisin, se tiene ms cifras en la mantisa, pero an existe truncamiento.
23-07-2004
176
Esto muestra porque los flotantes de precisin simple permiten representar nmeros
decimales con seis cifras decimales significativas, ya que dos nmeros adyacentes difieren
en FLT_EPSILON.
g) El mayor sub-normal positivo es:
+ 0.11111111111111111111111 *2-126 = 1.1754942106924411e-38
Llamados al sistema en SPIM para leer y escribir flotantes.
El siguiente programa ilustra los llamados al sistema para leer y escribir un nmero en
punto flotante en la consola de SPIM. Los nmeros pueden ingresarse con punto decimal,
con y sin exponente decimal. En forma similar a la sintaxis de C (1.75 con punto decimal,
y empleando notacin exponencial 0.5e-3. Debe ser e minscula).
El programa permite experimentar con la conversin de nmeros punto flotante, en
representacin externa decimal, a representacin interna formato IEEE 754, con apoyo del
simulador. Estas operaciones son tediosas de realizar con papel y lpiz.
mensaje2:
x:
.data
.asciiz "\nEntre un nmero real = "
.float 0.0
.text
.globl main
main:
li
$v0,4
la
$a0,mensaje2
syscall
li
$v0,6
#read float en f0
syscall
s.s
$f0,x
#store single en $f0 en variable esttica x.
#macro que emplea swc1
mov.s $f12,$f0
#argumento en $f12
li
$v0,2
#print float
syscall
j
main
Las operaciones en punto flotante requieren de algoritmos especiales y de un hardware
dedicado (desde 1990 se emplea un coprocesador integrado al procesador en el mismo chip,
con registros independientes, y que puede comunicar los resultados a la memoria).
Simulador de representacin y operaciones con nmeros.
Existe en la red un simulador de algoritmos aritmticos para computadores, en la siguiente
direccin:
http://www.ecs.umass.edu/ece/koren/arith/simulator/
23-07-2004
177