Вы находитесь на странице: 1из 5

Lgica e Matemtica Computacional - Sistema de Ponto Flutuante

SISTEMA DE PONTO FLUTUANTE


As mquinas utilizam a seguinte normalizao para representao dos nmeros:
0.d1d 2 Ld n * Be
onde 0 di (B 1) , para i = 1, 2, ..., n, com d1 0 , e e1 e e 2 . Um nmero nesta forma
denominado nmero de ponto flutuante normalizado; 0.d1d 2 Ld n chamada mantissa (alguns
autores consideram o sinal ); B a base; d i , com i = 1, 2, ..., n, so os dgitos (ou algarismos) da
mantissa; n o nmero de algarismos significativos (nmero mximo de dgitos usados na
representao do nmero); e o expoente e e1, e 2 denotam os limites inferior e superior,
respectivamente, do expoente.
Observe que o zero no pode ser representado desta forma. O conjunto formado pelo zero e
por todos os nmeros em notao de ponto flutuante chamado Sistema de Ponto Flutuante na base
B com n algarismos significativos, denotado por F(B, n, e1, e2).
Exemplo 1: Vejamos os sistemas de ponto flutuante de algumas mquinas antigas: HP 25,
F(10,9,-98,100); Texas SR 50 e HP 41C, F(10,10,-98,100); Texas SR 52, F(10,12,-98,100); IBM
360/370, F(16,6,-64,63); Burroughs B 6700, F(8,13,-51,77). Comparando com sua calculadora ou seu
microcomputador, estas mquinas podem ser ditas obsoletas, no ponto de vista do sistema de ponto
flutuante?
Exemplo 2: Vejamos dois nmeros binrios com oito algarismos significativos:
n1 = 0.11100110 * 22, que representa a quantidade 3,59375 (em base dez);
n2 = 0.11100111 * 22, que representa a quantidade 3,609375 (em base dez).
Observe que, no sistema de representao utilizado, n1 e n2 so dois nmeros consecutivos, ou
seja, no podemos representar nenhum outro nmero que tenha valor intermedirio. Portanto, por
exemplo, a quantidade 3.6 no tem representao exata neste sistema, sendo representada por n1 ou n2,
o que gerar um erro, denominado Erro de Arredondamento. Assim, enquanto os nmeros reais
podem ser representados por uma reta contnua, em notao de ponto flutuante somente podemos
representar pontos discretos da reta real.
Propriedades:
Vejamos algumas propriedades dos nmeros do sistema de ponto flutuante F = F(B, n, e1, e2):
1

Lgica e Matemtica Computacional - Sistema de Ponto Flutuante

a) m = 0.1 * Be1 o menor nmero no-nulo, em mdulo, em F;

b) M = 0.(B 1)(B 1)L (B 1) * Be 2 o maior nmero do sistema de ponto flutuante F;


144424443
n vezes

c) A cardinalidade (nmero de elementos) de F 2(B 1)Bn 1(e2 e1 + 1) + 1 ; (explique porque)


d) A mantissa est contida no intervalo [0.1, 1);
e) Se x F , ento x F .
Exerccio 1: Encontre a cardinalidade, o maior e o menor elemento positivo dos sistemas de

ponto flutuante do exemplo 1. Analisando os resultados, decida qual sistema de ponto flutuante o
melhor, justificando sua resposta.
Exemplo 3: Seja o sistema de ponto flutuante F = F(2, 3, -1, 2). Como a base dois, os

dgitos possveis so 0 ou 1. Assim, como os nmeros deste sistema devem ter at trs dgitos, as
mantissas podem ser: 0.100, 0.101, 0.110 e 0.111. Estes nmeros representam, respectivamente, as
quantidades 1, 5/4, 3/2 7/4. E mais, os expoentes da base possveis so 1, 0, 1 ou 2. Portanto, na
tabela abaixo escrevemos ( em negrito) todos os nmeros positivos do sistema de ponto flutuante, j
colocados na base dez:
Expoentes
e
-1
0
1
2

Mantissas
2e
1/2
1
2
4

0.100

0.101

0.110

0.111

1/4
1/2
1
2

5/16
5/8
5/4
5/2

3/8
3/4
3/2
3

7/16
7/8
7/4
7/2

Exerccio 2: Desenhe sobre o eixo real todos os nmeros positivos do sistema de ponto

flutuante do exemplo 3.
Podemos observar que os nmeros em notao de ponto flutuante no esto uniformemente
distribudos no intervalo [0, 7/2]. O mesmo ocorrer no intervalo simtrico [-7/2, 0]. No entanto,
existem diferentes zonas de distribuio uniforme (por exemplo, 1/4, 5/16, 3/8, 7/16), nas quais
notamos que os nmeros possuem o mesmo expoente. Mais, entre expoentes sucessivos da base
existem uma quantidade constante de nmeros de ponto flutuante, dada por Bn 1(B 1) = 4 . E mais, a
tabela nos informa a cardinalidade do sistema de ponto flutuante, pois ela igual ao dobro do nmero
de elementos positivos (por causa dos negativos) mais um (o zero). Estas informaes ajudam na

Lgica e Matemtica Computacional - Sistema de Ponto Flutuante

verificao da propriedade (c) acima. Observamos, tambm, que nesta tabela encontramos o maior e o
menor elemento positivo (com fundo cinza).
Ainda pode-se observar que h uma regio entre o menor elemento positivo de F e o zero e,
simetricamente, entre o maior elemento negativo e o zero, denominada Regio de Underflow. As
regies situadas antes do menor elemento negativo e aps o maior elemento de F so denominadas
Regies de Overflow. Estas regies so denotadas e dadas, respectivamente, pelos intervalos

R U = (m,0) (0, m) e R O = (,M) (M,+) . No exemplo acima, R U = (1 / 4,0) (0,1 / 4) e


R O = (,7 / 2) (7 / 2,+) .
Exerccio 3: Encontre todos os elementos positivos (em base dez), a cardinalidade, a regio

de overflow e a regio de underflow para o sistema de ponto flutuante F(3,2,-2,2).


Representao em um Sistema de Ponto Flutuante:

Como podemos representar nmeros em um sistema de ponto flutuante? Como uma mquina
enxerga os nmeros que esto nas regies de underflow ou overflow de seu sistema?
Notao: x representado por y x y. Observe que x y no o mesmo que x = y.

Os nmeros encontrados na regio de overflow so enxergados pela mquina como infinitos,


ou seja, o que chamamos de problema de overflow. Os nmeros que esto na regio de underflow so
vistos pela mquina como zero, ou seja, x R U x 0 . Se encontramos em uma mquina a
mensagem problema de overflow, enorme a possibilidade de termos a diviso por um nmero na
regio de underflow, ou seja, para ela, a diviso por zero.
Quanto a outro nmero x, ou x pertence ao sistema de ponto flutuante, ou x representado por
um elemento do sistema de ponto flutuante. Em geral esta representao feita de uma das duas
formas a seguir. Para explica-las, consideremos dois nmeros consecutivos do sistema de ponto
flutuante, x < x , de tal forma que x < x < x .
a) Representao por Corte ou Truncamento: Esta representao em F(B, n,e1, e2) obtida
considerando-se apenas os n primeiros algarismos, na base B, da mantissa do nmero. Em outras
palavras, um nmero x representado pelo maior nmero em ponto flutuante que seja menor que x, ou
T

seja, x x (ateno na notao). Observe que esta forma de representao pode gerar um grande
erro de arredondamento. Para tanto basta que x esteja muito prximo de x .
b) Representao por Arredondamento: Nesta representao, x representado pelo elemento do
sistema de ponto flutuante que estiver mais prximo dele, diminuindo ao mximo o erro de

Lgica e Matemtica Computacional - Sistema de Ponto Flutuante

arredondamento. Assim, se x < x <

contrrio, se

x + x
A
, ento x x (ateno na notao). Caso
2

x + x
A
x < x , ento x x . Esta representao em F(B, n,e1, e2) obtida, no
2

caso de bases pares, considerando-se os n primeiros algarismos, na base B, da mantissa do nmero,


mas devemos olhar o prximo dgito (dgito n+1). Se ele for maior ou igual que B/2, ento
aumentamos o n-simo dgito em uma unidade. Caso contrrio, se menor que B/2, ento mantemos o
n-simo dgito. O caso de bases mpares no ser abordado aqui.
No se deve confundir representao por truncamento e representao por arredondamento
com erro de truncamento e erro de arredondamento. O erro de truncamento o erro devido ao
mtodo numrico aplicado (por exemplo, expanso truncada de uma srie, linearizao de uma
funo). O erro de arredondamento o erro devido a representao de um nmero real em um
sistema de ponto flutuante.
Exemplo 4: Em F(10, 4, -98, 100), as quantidades 0.333333, 0.123952, 0.348446 e 0.666...

so representadas por corte, respectivamente, como 0.3333, 0.1239, 0.3484 e 0.6666 (observe que
apenas consideramos os primeiros dgitos do nmero) e so representados por arredondamento,
respectivamente, por 0.3333, 0.1240, 0.3484 e 0.6667 (observe que quando o prximo dgito maior
que 5, o ltimo algarismo aumentado de uma unidade).
Exemplo 5: O nmero real 9/8 = 1.125 escrito na base dois como 0.1001*21. Portanto, ele

no pertence ao sistema F(2, 3, -1, 2). No entanto, sua representao por corte 0.100*21 (igual a 1 na
base dez) e por arredondamento 0.101*21 (igual a 1,25 na base 10). Observe que o erro de
arredondamento em qualquer das duas representaes o mesmo, mas isto, em geral, no ocorre. Por
outro lado, os nmeros reais x = 5/4 e y = 3/8 pertencem a este sistema, mas sua soma, x + y = 13/8,
est fora do sistema de ponto flutuante em questo.
Exerccio 4: Represente os nmeros abaixo, por arredondamento e por corte, no sistema de

ponto flutuante F(6,4,-2,3):


a) 0.0055555;

b) 1345.15;

d) 0.055555;

e) 13.053 .

c) 0.000123425;

A adio e a multiplicao na aritmtica de ponto flutuante no possui as mesmas


propriedades do conjunto dos nmeros reais. Elas no so associativas nem distributivas. Isto se deve
ao fato da representao ser feita aps cada operao. Para vermos isto, seja o exemplo abaixo.

Lgica e Matemtica Computacional - Sistema de Ponto Flutuante

Exemplo 6: Consideremos um sistema de ponto flutuante com B = 10 e n = 3 e uma

representao por arredondamento. Vejamos as seguintes operaes:


A

(4.46 + 9.24) + 5.04 = 13.5 + 5.04 = 18.54 18.5


A

4.26 + (9.24 + 5.04) = 4.26 + 14.28 4.26 + 14.3 = 18.56 18.6

ou seja, a adio no associativa.


Exerccio 5: Trabalhando como no exemplo 6 acima, no mesmo sistema de ponto flutuante e

na mesma forma de representao, verifique que:


a ) (4210 4.99) 0.02 4210 (4.99 + 0.02)
.
b) (0.123 / 7.97) * 84.9 (0.123 * 84.9) / 7.97
c) 15.9 * (4.99 + 0.02) (15.9 * 4.99) + (15.9 * 0.02)
Exerccio 6: Realize todos os clculos do exemplo 6 e do exerccio 5 acima, mas usando

representao por truncamento.


Os itens (b) e (c) do exerccio 5 acima nos mostram, respectivamente, que o produto no
associativo, nem distributivo em relao a adio em um sistema de ponto flutuante. Sendo assim, os
erros de arredondamento introduzidos a cada operao influem na soluo obtida pelo mtodo
numrico aplicado. Consequentemente, mtodos numricos matematicamente equivalentes podem
fornecer resultados diferentes.
Respostas de alguns exerccios:

3) Os elementos positivos so: 1/27, 4/81, 5/81, 2/27, 7/81, 8/81, 1/9, 4/27, 5/27, 2/9, 7/27,
8/27, 1/3, 4/9, 5/9, 2/3, 7/9, 8/9, 1, 4/3, 5/3, 2, 7/3, 8/3, 3, 4, 5, 6, 7, 8. O conjunto tem 2x30+1 = 61
elementos. R U = (1 / 27,0) (0,1 / 27) e R O = (,8) (8,+) .
A

4) Por arredondamento: a) 0.0055555 0.01; b) Problema de Overflow; c) 0.000123425


A

0; d) 0.055555 0.1; e) 13.053 .13.05 . Por truncamento: a) 0.0055555


A

0.005555; b) Problema de Overflow; c) 0.000123425 0; d) 0.055555 0.05555; e)


A

13.053 .13.05 .
A

a ) (4210 4.99) 0.02 4210, 4210 (4.99 + 0.02) 4200


A

5) b) (0.123 / 7.97) * 84.9 1.31, (0.123 * 84.9) / 7.97 1.30


A

c) 15.9 * (4.99 + 0.02) 79.7, (15.9 * 4.99) + (15.9 * 0.02) 79.6