Vírgula flutuante
Origem: Wikipédia, a enciclopédia livre.
Vírgula flutuante ou Ponto flutuante (do inglês floating point number) é um formato de representação digital de números reais, que é usada nos computadores.
O número é dividido numa mantissa (M) e um expoente (E). O valor representado é obtido pelo produto: M · 2E
Desta forma é possível cobrir um largo espectro de números, maximizando o número de bits significativos e consequentemente a precisão da aproximação. Esta forma de representação foi criada por Konrad Zuse para os seus computadores Z1 e Z3.
O número de bits alocados para representar a mantissa e o expoente depende da norma utilizada. A maioria dos sistemas que operam com vírgula flutuante utilizam representaçãoes definidas na norma IEEE 754.
A Norma IEEE754 define os formatos adequados para representar números em vírgula flutuante de precisão simples (32 bits) e de precisão dupla (64 bits).
O formato de vírgula flutuante de precisão 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 números positivos e 1 para números negativos. O campo de expoente (e) corresponde à soma de 127 com o expoente de base 2 do número representado. O campo de mantissa (m) corresponde à parte fracionária da mantissa do número 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 não é necessário representar.
v = S × M × 2E
Onde:
S = 1 − 2 × s
M = 1.m = 1 + m × 2-23
E = e − 127
[editar] Exemplos
Valor | S × M × 2E | s | m | e | IEEE 754 - Single Precision |
---|---|---|---|---|---|
1 | 1 × 1 × 20 | 0 | 0x00 | 127 | 0 0111 1111 000 0000 0000 0000 0000 0000 |
-1 | -1 × 1 × 20 | 1 | 0x00 | 127 | 1 0111 1111 000 0000 0000 0000 0000 0000 |
0,5 | 1 × 1 × 2-1 | 0 | 0x00 | 126 | 0 0111 1110 000 0000 0000 0000 0000 0000 |
-0,5 | -1 × 1 × 2-1 | 1 | 0x00 | 126 | 1 0111 1110 000 0000 0000 0000 0000 0000 |
0,15625 | 1 × 1,25 × 2-3 | 0 | 0x200000 | 124 | 0 0111 1100 010 0000 0000 0000 0000 0000 |
[editar] Valores Especiais
As notações com os bits do campo expoente (e) todos a um ou todos a zero são reservadas para valores especiais. O zero é representado com e=0 e m=0. Outros valores de m com e=0 indicam números não normalizados. Nestas casos considera-se a mantissa entre 0 e 1.
IEEE 754 - Single Precision | Valor | ||||
---|---|---|---|---|---|
s | e | m | |||
0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | +0 | Zero | |
1 | 0000 0000 | 000 0000 0000 0000 0000 0000 | -0 | ||
0 | 1111 1111 | 000 0000 0000 0000 0000 0000 | +Inf | Infinito Positivo | |
1 | 1111 1111 | 000 0000 0000 0000 0000 0000 | -Inf | Infinito Negativo | |
0 | 1111 1111 | 010 0000 0000 0000 0000 0000 | +NaN | Not a Number | |
1 | 1111 1111 | 010 0000 0000 0000 0000 0000 | -NaN |