Teoria

Fala aí, beleza?! Vamos falar sobre a linguagem que os computadores usam?! Um computador ou calculadora representa um número real no sistema denominado aritmética de ponto flutuante! Os números binários são representados seguindo um padrão seguido por praticamente todos os computadores:

Uma representação binária em 32   b i t s (precisão simples) é usada para números reais, onde temos 1 bit para o sinal, 8 para a característica e 23 para a mantissa (parte fracionária do número). Nesse caso, o expoente varia entre - 126 até 127 .

Em geral, um número normalizado em 32 bits é da forma:

- 1 s 2 c - 127 1 + f

Onde s será o sinal, c a característica e f a mantissa.

Se estivermos trabalhando com 64 bits o 127 é substituído por 1023. Beleza?!

Obs.: Alguns valores especiais são:

z e r o → s = 0   o u   1 ; e x p = 0 ; f = 0

+ ∞ → s = 0 ; e x p = 111 … 111 ; f = 0

- ∞ → s = 1 ; e x p = 111 … 111 ; f = 0

N a N   n o t   a   n u m b e r → s = 0   o u   1 ; e x p = 111 … 111 ; f ≠ 0

Quando temos o expoente igual a 0 e um valor diferente de 0 na mantissa é uma indicação de número não normalizado. Nesse caso consideramos a mantissa entre 0 e 1 ao invés de entre 1 e 2 e usamos o expoente mínimo. Na aritmética de ponto flutuante ficamos com essa carinha aqui, onde:

Os d i ' s são os dígitos da parte fracionária:

1 ≤ d 1 ≤ β - 1

0 ≤ d i ≤ β - 1   ,   i ∈ 2 , k

β é a base (em geral 2, 10 ou 16);

k é o número de dígitos na mantissa;

n é o expoente no intervalo 1 , u

Show de bolas?!

Desse modo, uma máquina que use aritmética de ponto flutuante pode ser caracterizada por 4 números:

F β , k , e m i n , e m a x

Vamos ver um exemplo de como isso funciona?

Considere, por exemplo, uma máquina que opera no sistema:

β = 10 ; k = 5 ; n ∈ - 5,5 ,

Ou seja, F 10,5 , - 5,5 . Os números são representados neste sistema da seguinte forma:

± 0 . d 1 d 2 d 3 d 4 d 5 × 10 n ; 1 ≤ d 1 ≤ 9 ;   0 ≤ d i ≤ 9   ,   i ∈ 2,5

O menor número, em valor absoluto, representado por essa máquina seria:

0.10000 × 10 - 5 = 10 - 6

Enquanto o maior número seria:

0.99999 × 10 5 = 99999

Show de bola?!

Como vimos, em nenhuma máquina é possível representarmos todos os números reais devido ao limite físico. Sendo assim apenas um conjunto deles pode ser representado completamente. Por essa razão, a representação de alguns números será realizada por meio de truncamento ou arredondamento.

Por exemplo, o número π é representado na sua forma decimal normalizada da seguinte forma:

π = 0.314159265 … × 10 1

Se fôssemos representa-lo na máquina acima usando truncamento teríamos:

0.31415 × 10 1

Enquanto usando arredondamento teríamos:

0.31416 × 10 1

Isso porque o sexto dígito da representação normalizada de π é um 9 ≥ 5 , logo ao arredondarmos somamos uma unidade na quinta casa decimal. Beleza?!

Nesse caso temos que π está entre o mínimo e máximo que essa máquina pode representar, mas possui muitas casas decimais, então acabamos com uma aproximação.

Também pode acontecer de termos um número menor que o mínimo da máquina, como por exemplo:

0.97976 × 10 - 7

Ele não pode ser representado pois o expoente n é menor que - 5 . Nessas situações a máquina acusa a ocorrência de underflow. Analogamente podemos ter um número de valor absoluto maior do que a máquina consegue representar:

0.60963 × 10 8

Nesse caso a máquina acusa a ocorrência de overflow. Beleza, vamos praticar um pouco isso aí que vimos antes de passar adiante!

Exercícios de Livros Relacionados