Você está na página 1de 5

Lógica e Matemática Computacional - Sistema de Ponto Flutuante

SISTEMA DE O
P NTO L
F T
U N
AU TE

As máquinas utilizam a seguinte normalização para representação dos números:

± 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 número nesta forma é


denominado número de o z do ; 0.d1d 2 Ld n é chamada mantissa (alguns
p nto flutuante normalia
autores consideram o sinal ±); B é a base ; d i , com i = 1, 2, ..., n, são os dígitos (ou algarismos) da
mantissa; n é o número de algarismos significativos (número máximo de dígitos usados na
representação do número); e é o expoente e e1, e 2 denotam os limites inferior e superior ,
respectivamente, do expoente.
Observe que o zero não pode ser representado desta forma. O conjunto formado pelo zero e
por todos os números em notação 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 máquinas 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 máquinas podem ser ditas obsoletas, no ponto de vista do sistema de ponto
flutuante?
Exemplo 2: Vejamos dois números binários 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 representação utilizado, n1 e n2 são dois números consecutivos, ou
seja, não podemos representar nenhum outro número que tenha valor intermediário. Portanto, por
exemplo, a quantidade 3.6 não tem representação exata neste sistema, sendo representada por n1 ou n2,
o que gerará um erro, denominado Erro de rA redondamento . Assim, enquanto os números reais
podem ser representados por uma reta contínua, em notação de ponto flutuante somente podemos
representar pontos discretos da reta real.

Propriedades:
Vejamos algumas propriedades dos números do sistema de ponto flutuante F = F(B, n, e1, e2):

1
Lógica e Matemática Computacional - Sistema de Ponto Flutuante

a) m = 0.1 * Be1 é o menor número não-nulo, em módulo, em F;

b) M = 0.(B − 1)(B − 1)L (B − 1) * Be 2 é o maior número do sistema de ponto flutuante F;


144424443
n vezes

c) A cardinalidade (número 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 , então − x ∈ F .
Exercício 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
dígitos possíveis são 0 ou 1. Assim, como os números deste sistema devem ter até três dígitos, as
mantissas podem ser: 0.100, 0.101, 0.110 e 0.111. Estes números representam, respectivamente, as
quantidades 1, 5/4, 3/2 7/4. E mais, os expoentes da base possíveis são –1, 0, 1 ou 2. Portanto, na
tabela abaixo escrevemos ( em negrito) todos os números positivos do sistema de ponto flutuante, já
colocados na base dez:

Expoentes Mantissas
e 2e 0.100 0.101 0.110 0.111
-1 1/2 1/4 5/16 3/8 7/16
0 1 1/2 5/8 3/4 7/8
1 2 1 5/4 3/2 7/4
2 4 2 5/2 3 7/2

Exercício 2: Desenhe sobre o eixo real todos os números positivos do sistema de ponto
flutuante do exemplo 3.
Podemos observar que os números em notação de ponto flutuante não estão uniformemente
distribuídos no intervalo [0, 7/2]. O mesmo ocorrerá no intervalo simétrico [-7/2, 0]. No entanto,
existem diferentes zonas de distribuição uniforme (por exemplo, 1/4, 5/16, 3/8, 7/16), nas quais
notamos que os números possuem o mesmo expoente. Mais, entre expoentes sucessivos da base

existem uma quantidade constante de números 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 número
de elementos positivos (por causa dos negativos) mais um (o zero). Estas informações ajudam na

2
Lógica e Matemática Computacional - Sistema de Ponto Flutuante

verificação da propriedade (c) acima. Observamos, também, que nesta tabela encontramos o maior e o
menor elemento positivo (com fundo cinza).
Ainda pode-se observar que há uma região entre o menor elemento positivo de F e o zero e,
simetricamente, entre o maior elemento negativo e o zero, denominada Rego
ãi de nU derflow . As
regiões situadas antes do menor elemento negativo e após o maior elemento de F são denominadas
Regiões de Overflow . Estas regiões são 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,+∞) .

Exercício 3: Encontre todos os elementos positivos (em base dez), a cardinalidade, a região
de overflow e a região de underflow para o sistema de ponto flutuante F(3,2,-2,2).

Representação em um Sist ema de Ponto Flutuante:


Como podemos representar números em um sistema de ponto flutuante? Como uma máquina
enxerga os números que estão nas regiões de underflow ou overflow de seu sistema?

Notação: “x é representado por y” ⇔ x → y. Observe que x → y não é o mesmo que x = y.

Os números encontrados na região de overflow são enxergados pela máquina como infinitos,
ou seja, o que chamamos de rp oblema de overflow. Os números que estão na região de underflow são
vistos pela máquina como zero, ou seja, x ∈ R U ⇒ x → 0 . Se encontramos em uma máquina a
mensagem “problema de overflow” , é enorme a possibilidade de termos a divisão por um número na
região de underflow, ou seja, para ela, a divisão por zero.
Quanto a outro número x, ou x pertence ao sistema de ponto flutuante, ou x é representado por
um elemento do sistema de ponto flutuante. Em geral esta representação é feita de uma das duas
formas a seguir. Para explica-las, consideremos dois números consecutivos do sistema de ponto
flutuante, ∇x < ∆x , de tal forma que ∇x < x < ∆x .
a) Representação por Corte ou Truncamento : Esta representação em F(B, n,e1, e2) é obtida
considerando-se apenas os n primeiros algarismos, na base B, da mantissa do número. Em outras
palavras, um número x é representado pelo maior número em ponto flutuante que seja menor que x, ou
T
seja, x ⎯⎯→ ∇x (atenção na notação). Observe que esta forma de representação pode gerar um grande
erro de arredondamento. Para tanto basta que x esteja muito próximo de ∆x .
b) Representaço
ã o
p r rA redondamento : Nesta representação, x é representado pelo elemento do
sistema de ponto flutuante que estiver mais próximo dele, diminuindo ao máximo o erro de

3
Lógica e Matemática Computacional - Sistema de Ponto Flutuante

∇x + ∆x A
arredondamento. Assim, se ∇x < x < , então x ⎯⎯→ ∇x (atenção na notação). Caso
2
∇x + ∆x A
contrário, se ≤ x < ∆x , então x ⎯⎯→ ∆x . Esta representação 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 número,
mas devemos olhar o próximo dígito (dígito n+1). Se ele for maior ou igual que B/2, então
aumentamos o n-ésimo dígito em uma unidade. Caso contrário, se menor que B/2, então mantemos o
n-ésimo dígito. O caso de bases ímpares não será abordado aqui.
Não se deve confundir representação por truncamento e representação por arredondamento
com erro de truncamento e erro de arredondamento. O erro de truncamento é o erro devido ao
método numérico aplicado (por exemplo, expansão truncada de uma série, linearização de uma
função). O erro de arredondamento é o erro devido a representação de um número 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...
são representadas por corte, respectivamente, como 0.3333, 0.1239, 0.3484 e 0.6666 (observe que
apenas consideramos os primeiros dígitos do número) e são representados por arredondamento,
respectivamente, por 0.3333, 0.1240, 0.3484 e 0.6667 (observe que quando o próximo dígito é maior
que 5, o último algarismo é aumentado de uma unidade).
Exemplo 5: O número real 9/8 = 1.125 é escrito na base dois como 0.1001*21. Portanto, ele
não pertence ao sistema F(2, 3, -1, 2). No entanto, sua representação 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 representações é o mesmo, mas isto, em geral, não ocorre. Por
outro lado, os números 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 questão.
Exercício 4: Represente os números abaixo, por arredondamento e por corte, no sistema de
ponto flutuante F(6,4,-2,3):

a) 0.0055555; b) 1345.15; c) 0.000123425;


d) 0.055555; e) 13.053 .
A adição e a multiplicação na aritmética de ponto flutuante não possui as mesmas
propriedades do conjunto dos números reais. Elas não são associativas nem distributivas. Isto se deve
ao fato da representação ser feita após cada operação. Para vermos isto, seja o exemplo abaixo.

4
Lógica e Matemática Computacional - Sistema de Ponto Flutuante

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


representação por arredondamento. Vejamos as seguintes operações:
A
(4.46 + 9.24) + 5.04 = 13.5 + 5.04 = 18.54 ⎯⎯→18.5
,
A A
4.26 + (9.24 + 5.04) = 4.26 + 14.28 ⎯⎯→ 4.26 + 14.3 = 18.56 ⎯⎯→18.6

ou seja, a adição não é associativa.


Exercício 5: Trabalhando como no exemplo 6 acima, no mesmo sistema de ponto flutuante e
na mesma forma de representação, 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)

Exercício 6: Realize todos os cálculos do exemplo 6 e do exercício 5 acima, mas usando


representação por truncamento.
Os itens (b) e (c) do exercício 5 acima nos mostram, respectivamente, que o produto não é
associativo, nem distributivo em relação a adição em um sistema de ponto flutuante. Sendo assim, os
erros de arredondamento introduzidos a cada operação influem na solução obtida pelo método
numérico aplicado. Consequentemente, métodos numéricos matematicamente equivalentes podem
fornecer resultados diferentes.

Respostas de alguns exercícios:


3) Os elementos positivos são: 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 A A A
⎯⎯→ 0; d) 0.055555 ⎯⎯→ 0.1; e) 13.053 ⎯⎯→ .13.05 . Por truncamento: a) 0.0055555 ⎯⎯→
A A
0.005555; b) Problema de Overflow; c) 0.000123425 ⎯⎯→ 0; d) 0.055555 ⎯⎯→ 0.05555; e)
A
13.053 ⎯⎯→ .13.05 .
A A
a ) (4210 − 4.99) − 0.02 ⎯⎯→ 4210, 4210 − (4.99 + 0.02) ⎯⎯→ 4200
A A
5) b) (0.123 / 7.97) * 84.9 ⎯⎯→1.31, (0.123 * 84.9) / 7.97 ⎯⎯→1.30
A A
c) 15.9 * (4.99 + 0.02) ⎯⎯→ 79.7, (15.9 * 4.99) + (15.9 * 0.02) ⎯⎯→ 79.6

Você também pode gostar