Buscar

Sistema de Ponto Flutuante

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Lógica e Matemática Computacional - Sistema de Ponto Flutuante 
 1
SISTEMA DE PONTO FLUTUANTE 
As máquinas utilizam a seguinte normalização para representação dos números: 
e
n21 B*ddd.0 L± 
onde )1B(d0 i −≤≤ , para i = 1, 2, ..., n, com 0d1 ≠ , e 21 eee ≤≤ . Um número nesta forma é 
denominado número de ponto flutuante normalizado; n21 ddd.0 L é chamada mantissa (alguns 
autores consideram o sinal ±); B é a base; id , 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 21 e,e 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 Arredondamento. 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): 
Lógica e Matemática Computacional - Sistema de Ponto Flutuante 
 2
a) 1eB*1.0m = é o menor número não-nulo, em módulo, em F; 
b) 2e
vezesn
B*)1B()1B)(1B(.0M 444 3444 21 L −−−= é o maior número do sistema de ponto flutuante F; 
c) A cardinalidade (número de elementos) de F é 1)1ee(B)1B(2 12
1n ++−− − ; (explique porque) 
d) A mantissa está contida no intervalo [0.1, 1); 
e) Se Fx∈ , então Fx∈− . 
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 e2 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 4)1B(B 1n =−− . 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 
Lógica e Matemática Computacional - Sistema de Ponto Flutuante 
 3
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 Região de Underflow. 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 
)m,0()0,m(RU ∪−= e ),M()M,(RO +∞∪−−∞= . No exemplo acima, )4/1,0()0,4/1(RU ∪−= e 
),2/7()2/7,(RO +∞∪−−∞= . 
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 Sistema 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 problema de overflow. Os números que estão na região de underflow são 
vistos pela máquina como zero, ou seja, 0xRx U →⇒∈ . 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, xx ∆<∇ , de tal forma que xxx ∆<<∇ . 
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 
seja, xx T ∇⎯→⎯ (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 por Arredondamento: 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 
Lógica e Matemática Computacional - Sistema de Ponto Flutuante 
 4
arredondamento. Assim, se 
2
xxxx ∆+∇<<∇ , então xx A ∇⎯→⎯ (atenção na notação). Caso 
contrário, se xx
2
xx ∆<≤∆+∇ , então xx A ∆⎯→⎯ . Esta representação em F(B, n,e1, e2) é obtida, no 
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. 
Lógica e Matemática Computacional - Sistema de Ponto Flutuante 
 5
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: 
6.1856.183.1426.428.1426.4)04.524.9(26.4
5.1854.1804.55.1304.5)24.946.4(
AA
A
⎯→⎯=+⎯→⎯+=++
⎯→⎯=+=++
 , 
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: 
)02.0*9.15()99.4*9.15()02.099.4(*9.15)c
97.7/)9.84*123.0(9.84*)97.7/123.0()b
)02.099.4(421002.0)99.44210()a
+≠+
≠
+−≠−−
 . 
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. )27/1,0()0,27/1(RU ∪−= e ),8()8,(RO +∞∪−−∞= . 
4) Por arredondamento: a) 0.0055555 ⎯→⎯A 0.01; b) Problema de Overflow; c) 0.000123425 
⎯→⎯A 0; d) 0.055555 ⎯→⎯A 0.1; e) 13.053 ⎯→⎯A .13.05 . Por truncamento: a) 0.0055555 ⎯→⎯A 
0.005555; b) Problema de Overflow; c) 0.000123425 ⎯→⎯A 0; d) 0.055555 ⎯→⎯A 0.05555; e) 
13.053 ⎯→⎯A .13.05 . 
5) 
6.79)02.0*9.15()99.4*9.15(,7.79)02.099.4(*9.15)c
30.197.7/)9.84*123.0(,31.19.84*)97.7/123.0()b
4200)02.099.4(4210,421002.0)99.44210()a
AA
AA
AA
⎯→⎯+⎯→⎯+
⎯→⎯⎯→⎯
⎯→⎯+−⎯→⎯−−

Outros materiais