Este documento explica la representación en coma flotante según el estándar IEEE 754. Describe cómo los números reales se representan usando signo, mantisa y exponente en formato de punto flotante de precisión simple y doble. También explica cómo se realizan operaciones aritméticas como suma, resta, multiplicación y división en este formato.
Este documento explica la representación en coma flotante según el estándar IEEE 754. Describe cómo los números reales se representan usando signo, mantisa y exponente en formato de punto flotante de precisión simple y doble. También explica cómo se realizan operaciones aritméticas como suma, resta, multiplicación y división en este formato.
Este documento explica la representación en coma flotante según el estándar IEEE 754. Describe cómo los números reales se representan usando signo, mantisa y exponente en formato de punto flotante de precisión simple y doble. También explica cómo se realizan operaciones aritméticas como suma, resta, multiplicación y división en este formato.
Precisin (IEE-754): -Bueno, pues analizado en la parte anterior del tema todo sobre la coma fija (representacin de n enteros), pasamos en esta parte al estudio sobre la representacin en coma flotante, es decir, la asociada a los n reales para la arquitectura IEE-754. As, cabe destacar tambin como apuntes previos a su estudio lo siguiente:
Su representacin no es exacta, sino aproximada (la cual depende de la precisin
que utilicemos: Simple Precisin o Doble Precisin) por lo que habr que aplicar (cuidadosamente) tcnicas de redondeo. La representacin en coma flotante es + compleja que en coma fija (debido a que IR > ), siendo necesario incorporar en el microprocesador coprocesadores de coma flotante. -Dicho esto, pasaremos a continuacin al anlisis de su aritmtica. A diferencia de la representacin en coma fija, en coma flotante (al tratarse de n reales (incluyen decimales) la representacin debe ser en notacin cientfica, la cual debe ser del siguiente modo:
Todo n (x) debe representarse en funcin de su signo (s), Mantisa (q)
y Exponente (e), de la forma:
*x: n real a representar
x = q Be *q: mantisa (n en forma de notacin) *B: base de la notacin (normalmente 2) *e: exponente de la notacin. Dicha notacin cientfica hay que normalizarla, para lo cual hay que dejar siempre a la izquierda de la coma de la mantisa (q) un 1 (Ej: 01001 = 0,1001 24 (sin normalizar) = 1,001 23 (normalizado)), el cual (1) no se almacena (ya que siempre va a ser 1) pasando a denominarse bit implcito. En sistema decimal (donde B = 10) sucede igual, hay que dejar a la izquierda de la coma un n 0 (232 = 0,232 103 () = 2,32 102 ()). En precisin simple, la representacin es de 32 bits los cuales se dividen en: Signo 1 bit (0 para + y 1 para ) Mantisa 23 bits (+ el bit (1) implcito) Exponente 8 bits (se expresa en binario sesgado (E), es decir: E = S + e = 2(e-1) 1 + e (Ej: con 8 bits (e), el sesgo es 28-1 1 = 127; y E = 127 + 8 (e) = 135). Adems, comparando los valores de E (exponente sesgado) de distintos n podemos (sin necesidad de pasar a otro sistema) comparar su valor (cual es > o <, etc.).
Pasar el n N = -0,75 de base 10 a IEE 754 con precisin simple:
(*) Para ello seguiremos los siguientes pasos: Pasamos el n de sistema decimal a sistema binario: 0,7510 0:2 = 0 (Resto 0), 7:2 = 3 (Resto 1), 5:2 = 2 (Resto 1) 0,112 Normalizamos: 0,11 1,121 Calculamos el exponente sesgado: E = S + e = 2(e-1) 1 + e = 28-1 1 + ( 1) = 127 1 = 12610 = 011111102 Calculamos la mantisa: 1,12 1 [m (mantisa) = 1] m = 1,10000000000000000000000 (como sabemos el bit de detrs de la coma no se almacena, por lo que podemos precisar la mantisa con los 23 bits disponibles (se completa con 0 hasta llegar a 23 bits)). Determinamos el bit del signo: S = 1 (es 1 ya que el n es negativo) Definimos el n en notacin cientfica binaria y lo pasamos finalmente a hexadecimal: S=1 E = 01111110 1011 1111 0100 0000 0000 0000 0000 0000 m = 10000000000000000000000 *1011 1111 0100 0000 0000 0000 0000 00002 0xBF400000 Pasar el n N = C0A00000 de base hexadecimal a IEE- 754 con precisin simple: (*) Para ello seguiremos los siguientes pasos: Pasamos el n de sistema hexadecimal a sistema binario: C0A0000016 = 1100 0000 1010 0000 0000 0000 0000 00002 Identificamos los distintos elementos: s = 1 (n ) E = 100 0000 1 m = 010 0000 0000 0000 0000 0000 Pasamos la m y e a sistema decimal: *1.0100000 0000 0000 0000 00002 = 120 + 02-1 + 12-2 + 02-3 + (0) = 1,25 *e = E S = 1000 00012 28-1 1 12910 12710 = 2 De este modo a partir de lo obtenido anteriormente dicho n (en decimal) es: s= m = 1,25 N = 1,25 22 = 5 E = 22 (B = 2 y e = 2)
En precisin doble, la representacin es de 64 bits los cuales se dividen en:
Signo 1 bit (0 para + y 1 para ) Mantisa 52 bits (+ el bit (1) implcito) Exponente 11 bits (se expresa en binario sesgado (E) a 1023, es decir: 211 1 = 2047 (la mitad para los n + (1023) y la otra mitad para los (1023)). (#) A diferencia de la precisin simple, permite mayor precisin en su representacin necesitando para ello un > tamao de palabra (64 bits) para el almacenamiento. -De este modo, podemos definir sobre la siguiente tabla donde distinguiremos los siguientes casos de representacin en coma flotante:
Nmero (en s, m y E) Intervalo de exponente correspondiente
s = 1, q = 1,m y E = 2e - 127 0 < e < 255 (n normalizado) s = 1, q = 0,m y E = 2- 126 e = 0 (n desnormalizado) 0 e=m=0 + e = 255, m = 0 y s = 0 e = 255, m = 0 y s = 1 NaN (si no es 1 n) e = 255 y m 0 2.- Operaciones en Coma Flotante (IEE 754): -Las operaciones en coma flotante de suma/resta y multiplicacin/divisin se realizan del siguiente modo. Vemoslo: Suma y Resta: en este caso: Se igualan los exponentes al del n de > grado. Se ajusta la mantisa del n <. Se realiza la operacin de suma o resta. -Dicho esto, veamos un ejemplo de cada caso: Representa en coma flotante las siguientes operaciones: 9,99 10 1 + 1,610 10 1 y 9.9910 1 1,61010 1 : 9,99 10 1 + 1,610 10 1 : Primero alineamos las mantisas (bases) de ambos n: 9,99 10 1 + 1,610 10 1 = 9,99 10 1 + 0,01610 10 1 Despus sumamos las mantisas de ambos n: (9,99 + 0,01610)101 = 10,015101 Ahora normalizamos (si es necesario): 10,015101 = 1,0015102 Finalmente redondeamos el resultado: 1,0015102 1,002102 9,99 10 1 1,610 10 1: Primero alineamos las mantisas (bases) de ambos n: 9,99 10 1 1,610 10 1 = 9,99 10 1 0,01610 10 1 Despus restamos las mantisas de ambos n: (9,99 0,01610)101 = 9,9739101 Ahora normalizamos (si es necesario): 9,9739101 = 9,9739101 (no es necesario) Finalmente redondeamos el resultado: 9,9739101 9,974101 Multiplicacin y Divisin: en este caso: Se suman (multiplicacin) o restan (divisin) los exponentes. Se realiza la operacin con las mantisas. -Dicho esto, veamos un ejemplo de cada caso: Representa en coma flotante las siguientes operaciones: 1,110 10 10 9,200 10 5 y 1,110 10 10 / 9,200 10 5: 1,110 10 10 9,200 10 5: Primero sumamos los exponentes: 1010 10 5 = 1010+( 5) = 105 Despus multiplicamos las mantisas de ambos n: 1,110 9,200 = 10,212 Ahora normalizamos (si es necesario): 10,212105 = 1,0212106 Finalmente redondeamos el resultado: 1,0212106 1,021106 1,110 10 10 / 9,200 10 5: Primero restamos los exponentes: 1010 / 10 5 = 1010 ( 5) = 1015 Despus dividimos las mantisas de ambos n: 1,110 / 9,200 = 0,1206 Ahora normalizamos (si es necesario): 0,12061015 = 1,2061014 Finalmente redondeamos el resultado: 1,2061014 1,211014 1 Indique el valor decimal y binario en IEE-754 del siguiente nmero hexadecimal representado en IEE-754 de 32 bits: 0x3FE00000: (*) Podemos elegir el orden de equivalencia que deseemos (lgicamente el + fcil). En este caso, pasaremos de hexadecimal a sistema decimal y finalmente a binario. Vemoslo: *0x3FE00000 3167 + 15166 + 14165 + 0(0) = 1.071.644.672 = 1,071644672 109 *1,071644672 109: para pasarlo a sistema binario recordamos los pasos a seguir: Pasamos el n de sistema decimal a sistema binario: 1.071.644.67210 1111111110000000000000000000002 Normalizamos: 111111111000000000000000000000 1,11111111229 Calculamos el exponente sesgado (siempre sobre 8 bits): E = S + e = 2(e-1) 1 + e = 28-1 1 + (29) = 127 + 29 = 156 = 100111002 Calculamos la mantisa: 1,11111111229 m = 11111111000000000000000 Determinamos el bit del signo: S = 0 (es 0 ya que el n es +) Definimos el n en notacin cientfica binaria: S=0 E = 10011100 0100 1110 0111 1111 1000 0000 0000 0000 m = 11111111000000000000000
2 En base a las siguientes cifras: A = 0,4523104, B =0, 2115103 y C = 13,80; calcular:
a) A+B, A B, A B, A/B y pasar C a sistema binario: a) En base a los estudiado anteriormente, pasaremos a realizar dichas operaciones: A+B = 0,4523104 + 0, 2115103 = 4,523103 + 0,2115103 = (4,523+0,2115) 103 = = 4,7345103 = 4,735103 A B = 0,4523104 0, 2115103 = 4,523103 0,2115103 = (4,523 0,2115) 103 = = 4,3115103 = 4,312103 AB = 0,4523104 0, 2115103 [104103 = 104+3= 107; 0,4523 0, 2115 = 0,0956] 0,0956107 = 9,56105 A/B = 0,4523104 /0, 2115103 [104/103 = 104-3= 101; 0,4523 / 0, 2115 = 2,1385] 2,1385101 = 2,14101 C = 13,80 [Para pasar un n con punto decimal a binario se hace lo siguiente]: Se pasa la parte entera del n (en este caso 13) a sistema binario: 13:2 = 6 (Resto 1), 6:2 = 3 (Resto 0), 3:2 = 1 (Resto 1), 1:2 = 0 (Resto 1) 1101 Se pasa la parte decimal a binario multiplicndola por 2, cogiendo la parte entera resultante y volviendo a multiplicar la parte decimal obtenida hasta llegar a la parte decimal inicial, es decir: 0,802 = 1,60 (se coge el 1), 0,602 = 1,20 (se coge el 1), 0,202 = 0,40 (se coge el 0), 0,40 2 = 0,80 (se coge el 0), 0,802 = 1,60 (se coge el 1) [como vemos hemos llegado a la multiplicacin inicial, por lo que paramos ah y cogemos los 0 y 1 en el orden en que los hemos obtenido] 11001 Finalmente unimos la parte entera obtenida con la decimal: 13,80 = 1101.11001