Você está na página 1de 3

Ponto flutuante

Ponto flutuante (do ingls floating point) ou vrgula flutuante[1] um formato de representao digital de nmeros reais, que usada nos computadores. O nmero dividido numa mantissa (M) e um expoente (E). O valor representado obtido pelo produto: M 2E Desta forma possvel cobrir um largo espectro de nmeros, maximizando o nmero de bits significativos e consequentemente a preciso da aproximao. Esta forma de representao foi criada por Konrad Zuse para os seus computadores Z1 e Z3. O nmero de bits alocados para representar a mantissa e o expoente depende da norma utilizada. A maioria dos sistemas que operam com ponto flutuante utilizam representaes definidas na norma IEEE 754. A Norma IEEE 754-2008 define os formatos adequados para representar nmeros em ponto flutuante de preciso simples (32 bits) e de preciso dupla (64 bits). O formato de ponto flutuante de preciso simples (32 bits) consiste num bit de sinal (s), 8 bits de expoente (e) e uma mantissa de 23 bits (m). O bit de sinal (s) 0 (zero) para nmeros positivos e 1 para nmeros negativos. O campo de expoente (e) corresponde soma de 127 com o expoente de base 2 do nmero representado. O campo de mantissa (m) corresponde parte fracionria da mantissa do nmero representado. Considera-se a sempre a mantissa normalizada entre 1 e 2. Desta forma a sua parte inteira sempre apenas um bit igual a 1 (um) que no necessrio representar. v = S M 2E Onde: S=12s M = 1.m = 1 + m 223 E = e 127

A frao decimal: 0,125 representada por: 1/10 + 2/100 + 5/1000. Da mesma forma, a frao binria: 0,001 tem valor: 0/2 + 0/4 + 1/8. Os dois valores so idnticos, sendo o primeiro escrito na base 10 e o segundo na base 2. Valor 1 -1 0,5 -0,5 0,15625 S M 2E 1 1 20 -1 1 20 1 1 21 -1 1 21 1 1,25 23 s m e IEEE 754 - Single Precision 0 0x00 127 0 0111 1111 000 0000 0000 0000 0000 0000 1 0x00 127 1 0111 1111 000 0000 0000 0000 0000 0000 0 0x00 126 0 0111 1110 000 0000 0000 0000 0000 0000 1 0x00 126 1 0111 1110 000 0000 0000 0000 0000 0000 0 0x200000 124 0 0111 1100 010 0000 0000 0000 0000 0000

[editar] Valores Especiais


As notaes com os bits do campo expoente (e) todos a um ou todos a zero so reservadas para valores especiais. O zero representado com e=0 e m=0. Outros valores de m com e=0 indicam nmeros no normalizados. Nestas casos considera-se a mantissa entre 0 e 1. IEEE 754 - Single Precision s e m 0 0000 0000 000 0000 0000 0000 0000 0000 1 0000 0000 000 0000 0000 0000 0000 0000 0 1111 1111 000 0000 0000 0000 0000 0000 1 1111 1111 000 0000 0000 0000 0000 0000 0 1111 1111 010 0000 0000 0000 0000 0000 1 1111 1111 010 0000 0000 0000 0000 0000 Valor +0 Zero -0 +Inf Infinito Positivo -Inf Infinito Negativo +NaN Not a Number -NaN

[editar] Implementao em Linguagens de Programao


Muitas fraes decimais no podem ser representadas exatamente como fraes binrias finitas. Por consequncia, diversos nmeros armazenados na mquina em vriaveis do tipo ponto flutuante (float, double, real) so apenas aproximaes. [2] Considere, por exemplo, a frao 1/3. Uma aproximao decimal seria: 0,3 ou, melhor: 0,33 ou, ainda melhor:

0,333 e assim por diante. No existe uma frao finita capaz de resultar em exatamente 1/3. Um outro exemplo interessante a frao 1/10. Em muitas linguagens de programao, apesar de rotinas de impresso mostrar o valor 0,100000, se exibirmos o nmero com maior preciso (por exemplo, 20 casas decimais), veremos que o valor real armazendo ser algo aproximado de: 0,10000000149001612000 (o valor pode mudar segundo o hardware e a linguagem utilizada). Assim, ao programar preciso ter cuidado com nmeros em ponto flutuante, em especial com acumuladores e comparaes.

Você também pode gostar