Sei sulla pagina 1di 5

Aritmtica del punto flotante

El sistema numrico que se usa cotidianamente se llama sistema decimal. La base


del sistema numrico decimal es 10 . Sin embargo, las computadoras no usan el sistema
decimal en los clculos ni en la memoria, sino que usan el sistema binario (base 2 ).
La base de un nmero se denota por medio de un subndice; por ejemplo: 3 22410 ,
es 3 224 en base 10 1001 112 , es 1001 11 en base 2 .
Un esquema de almacenamiento ampliamente usado para la forma binaria es el
estndar de la IEEE Standard for Binary Floating-Point Arithmetic. Esta forma fue
definida por el Institute of Electrical and Electronic Engineers, IEEE (Instituto de
Ingenieros Elctricos y Electrnicos). En general los fabricantes de las
microcomputadoras utilizan este estndar para el hardware de punto flotante.
Para almacenar un nmero en forma binaria, primero se normaliza; es decir, se
vuelve a escribir el nmero, en un equivalente binario de notacin cientfica
convencional, desplazando el punto decimal inmediatamente a la derecha del primer bit
significativo del nmero (es decir despus del primer 1 de izquierda a derecha). Luego
el resultado se multiplica por 2 n , si el punto se desplaz n posiciones a la izquierda, o
por 2 n si el punto se desplaz n posiciones a la derecha; la multiplicacin es necesaria
para recuperar el valor original del nmero.
Un nmero de punto flotante se puede escribir en la forma normalizada general, de
la siguiente manera:
V ( 1)s (1 f )2 (2t )10 (1.7)

donde V es el nmero de punto flotante, s es el bit de signo, cuyo valor puede ser 0
1 (si s 1 indica un nmero negativo, si s 0 indica un nmero positivo). Los bits
significativos del nmero estn contenidos en la cantidad (1 f ) , que se denomina
mantisa. La potencia t al final de la representacin es la caracterstica exponente.
El valor binario del exponente t no se almacena directamente; en vez de ello, se
almacena en forma sesgada o equivalente como un valor binario no negativo c . La
relacin del exponente real t en trminos del valor almacenado c y el sesgo b es:
t c b (1.8)
c t b (1.9)
donde b , toma un valor 127 para precisin simple ( 32 bits) y 1023 para precisin
doble ( 64 bits).
El formato de precisin simple usa 32 bits, de los cuales el primer bit (llamado bit
ms significativo), est reservado para el bit del signo s ; los 8 bits siguientes se usan
para almacenar un patrn de bits que representan el exponente t en forma sesgada (c) y
los 23 bits restantes se usan para la mantisa f . Slo se almacena la parte de la mantisa
denotada por f porque el dgito principal siempre es igual a 1 y se entiende que forma
parte del nmero.

El formato de precisin doble usa 64 bits, de los cuales el primer bit, est reservado
para el bit del signo s ; los 11 bits siguientes se usan para almacenar un patrn de bits
que representan el exponente t en forma sesgada (c) y los 52 bits restantes se usan
para la mantisa f . Slo se almacena la parte de la mantisa denotada por f porque el
dgito principal siempre es igual a 1 y se entiende que forma parte del nmero.

El exponente es desplazado antes de ser almacenado, ajustando su valor para


ponerlo dentro de un rango sin signo adaptable a una comparacin. As, para un nmero
en precisin simple, un exponente en el rango 126 ( 1111110 2 ) a 127 (11111112 )
es desplazado mediante la suma de 127 para obtener un valor en el rango 1 a 254 ( 0 y
255 tienen valores especiales descritos ms adelante). Para un nmero en precisin
doble, un exponente en el rango 1022 ( 11111111102 ) a 1023 (11111111112 ) es
desplazado mediante la suma de 1023 para obtener un valor en el rango 1 a 2046 ( 0 y
2047 tienen valores especiales descritos ms adelante).
Antes de ver como se almacena un nmero en una computadora en una palabra de
32 y 64 bits, es necesario saber como realizar las conversiones del sistema decimal al
binario y viceversa; tanto para nmeros enteros, como para fraccionarios.
Conversin de nmeros enteros del sistema decimal al sistema binario
Para convertir un nmero n del sistema decimal al sistema binario, se divide el
nmero n entre 2 y se registra el cociente c1 y el residuo r1 resultantes; se divide c1
entre 2 y se anotan el nuevo cociente c2 y el nuevo residuo r2 . Este procedimiento se
repite hasta obtener un cociente ci igual a cero con un residuo ri . El nmero
equivalente a n en el sistema binario queda formado as: ri ri 1 ri 2 r1 .
Ejemplo1.2.3 Convertir 11810 al sistema binario.
Se comienza dividiendo 118 entre 2 ; lo que resulte se divide nuevamente entre 2 .
Se sigue el mismo procedimiento hasta que el cociente sea igual a cero. Los residuos
son los que forman el nmero en sistema binario. (El signo no se toma en cuenta para
realizar las divisiones, slo se coloca al final de realizar la conversin).
118 2 59 y sobra 0 donde c1 59 y r1 0
59 2 29 y sobra 1 c2 29 y r2 1
29 2 14 y sobra 1 c3 14 y r3 1
14 2 7 y sobra 0 c4 7 y r4 0
7 2 3 y sobra 1 c5 3 y r5 1
3 2 1 y sobra 1 c6 1 y r6 1
1 2 0 y sobra 1 c7 0 y r7 1

11810 11101102
Conversin de nmeros enteros del sistema binario al sistema decimal
Para convertir un nmero n del sistema binario al sistema decimal, se multiplica
cada dgito de n por la base 2 elevado a una potencia igual a la posicin del dgito,
tomando como posicin cero el dgito ms a la derecha. La suma da el equivalente en
decimal.
Ejemplo1.2.4 Convertir 11101102 al sistema decimal.
Se comienza multiplicando cada dgito de 1110110 por 2 elevado a una potencia
igual a la posicin del dgito, tomando como posicin cero el dgito ms a la derecha;
sumando despus todos los trminos que formarn el nmero en sistema decimal. (El
signo no se toma en cuenta para realizar las multiplicaciones, slo se coloca al final de
realizar la conversin).
11101102 (1 26 1 25 1 24 0 23 1 22 1 21 0 20 ) 11810

11101102 11810
Conversin de nmeros fraccionarios del sistema decimal al sistema binario
Para convertir un nmero n fraccionario del sistema decimal al sistema binario, se
multiplica dicho nmero por 2 ; el resultado tiene una parte entera e1 y una parte
fraccionaria f1 . Se multiplica ahora f1 por 2 y se obtiene un nuevo producto con parte
entera e2 y fraccionaria f 2 . Este procedimiento se repite un nmero suficiente de veces
hasta que se presenta f i 0 . El equivalente de n en sistema binario queda as:
0 e1e2 e3e4
Ejemplo1.2.5 Convertir 0 62510 al sistema binario.
Se comienza multiplicando 0 625 por 2 ; la parte fraccionaria que resulte se
multiplica nuevamente por 2 . Se sigue el mismo procedimiento un nmero suficiente
de veces hasta que la parte fraccionaria sea igual a cero. La parte entera que resulta de
estas multiplicaciones es la que forma el nmero en sistema binario.
0 625 2 1 25 donde e1 1 y f1 0 25
0 25 2 05 e2 0 y f2 05
05 2 10 e3 1 y f3 00

0 62510 0 1012
Conversin de nmeros fraccionarios del sistema binario al sistema decimal
Para convertir un nmero n fraccionario del sistema binario al sistema decimal, se
multiplica cada dgito de n por la base 2 elevado a una potencia igual a la posicin del
dgito, tomando como posicin inicial 1 , a partir del punto. La suma da el equivalente
en decimal.
Ejemplo1.2.6 Convertir 0 1012 al sistema decimal.
Se comienza multiplicando cada dgito de 0 101 por 2 elevado a una potencia igual
a la posicin del dgito, tomando como posicin inicial 1 , a partir del punto; sumando
despus todos los trminos que formarn el nmero en sistema decimal.
1 2
0 1012 (1 2 0 2 1 2 3) 0 62510

0 1012 0 62510
Ya que se sabe como realizar las conversiones del sistema decimal al binario y
viceversa, a continuacin se vern ejemplos de como se almacena un nmero en una
computadora.
Ejemplo1.2.7 Representar el nmero 118 625 en una palabra de 32 bits usando el
sistema de la IEEE.
Para poder representar 118 625 en un tamao de palabra de 32 bits, se tienen que
identificar cada una de sus partes (el signo s , el exponente t en forma sesgada (c) y la
mantisa f ).
Dado que es un nmero negativo, el signo se representa con s 1 .
Primero se escribe el nmero 118 625 sin signo en base 2 , obteniendo primero la
parte entera y despus la fraccionaria. El resultado es 1110110 101; resultados
obtenidos en los ejemplos 1.2.3 y 1.2.5
Ya que se tiene el nmero en base 2 , se normaliza desplazando el punto decimal
inmediatamente a la derecha del primer bit significativo del nmero (es decir despus
del primer 1 de izquierda a derecha), obteniendo: 1110110 101 (1 110110101)2 (26 )10 .
Se escribe ste nmero de punto flotante en la forma normalizada general, usando la
ecuacin (1.7); obtenindose:
V ( 1)s (1 f )2 (2t )10 ( 1)1 (1 110110101) 2 (26 )10
El 2 se eleva a la 6 , ya que el punto decimal se desplaz 6 veces a la izquierda.
La mantisa es la parte a la derecha del punto decimal, y se rellena con ceros a la
derecha hasta que se obtengan los 23 bits. Es decir f 11011010100000000000000 .
El exponente es t 6 , se necesita desplazarlo para obtener el valor de c , usando la
ecuacin (1.9). Para el formato IEEE de 32 bits, el desplazamiento es b 127 :
c 6 127 133 . ste valor se convierte en binario.
133 2 66 y sobra 1 donde c1 66 y r1 1
66 2 33 y sobra 0 c2 33 y r2 0
33 2 16 y sobra 1 c3 16 y r3 1
16 2 8 y sobra 0 c4 8 y r4 0
8 2 4 y sobra 0 c5 4 y r5 0
4 2 2 y sobra 0 c6 2 y r6 0
2 2 1 y sobra 0 c7 1 y r7 0
1 2 0 y sobra 1 c8 0 y r8 1
13310 100001012

118 625 se representa en una palabra de 32 bits usando el sistema de la IEEE, de


la siguiente manera:
Comprobacin:
ste nmero de punto flotante se puede escribir en la forma normalizada general, de
la siguiente manera; (para obtener el valor de t , se utiliza la ecuacin (1.8)):

Lo anterior se obtuvo desplazando 6 posiciones a la derecha el punto decimal de la


mantisa, ya que t 6 . Despus se escribe el nmero sin signo en base 10 , obteniendo
primero la parte entera y despus la fraccionaria. El resultado es 118 625 , ver los
resultados obtenidos en los ejemplos 1.2.4 y 1.2.6.
Ejemplo1.2.8 Representar el nmero 0 2 en una palabra de 32 bits usando el sistema
de la IEEE.

Potrebbero piacerti anche