Você está na página 1de 8

Representao em Ponto

Flutuante

Nmeros Fracionrios em
repr.2 binria i

2i1

4
2
1
bi bi1 b2 b1 b0 . b1 b2 b3 bj
1/2
1/4
1/8

2j
Bits direita do ponto binrio representam potncias de 2
fracionrias
i
O nmero racional representado como: k
bk 2
k = j

1
Exemplos
Nmero Representao
5 + 3/4 101.112
2 + 7/8 10.1112
63/64 0.1111112

Observaes
Diviso por 2: shift right
Multiplicao por 2: shift left
Nmeros da forma 0.1111112 esto
prximos de 1.0
1/2 + 1/4 + 1/8 + + 1/2i + 1.0
Esta representao tem limitaes

Limitao
possvel representar exatamente apenas nmeros racionais que
tenham parte fracionria da forma:
Exemplos 0

Nmero Representao bk 2
k
=
k j
1/8 (= 0.125) 0.0012
1/16 (= 0.0625) 0.00112
5.625 101.1012

Outros nmeros possuem sequncias de bits repetidas


indefinidamente a representao binria no precisa
Exemplos:
Nmero Representao
1/3 0.0101010101[01]2
1/5 0.001100110011[0011]2
1/10 0.0001100110011[0011]2

Um problema desta representao: nmeros muito grandes ou muito


pequenos necessitariam de uma sequncia muito longa de bits

2
Representao IEEE
As mais diversas representaes de ponto
flutuante j foram propostas, mas
O padro IEEE 754 atualmente o mais
utilizado:
Criado em 1985 como padro para representao e
aritmtica em ponto flutuante
Implementado na grande maioria das CPUs

Define trs precises:


Single precision (float) 32 bits (preciso 24 bits)
Double precision (double) 64 bits (preciso 53 bits)
Double extended precision 80 bits (preciso 63 bits)
Obs: esta ltima somente em arquiteturas Intel-like

Padro IEEE 754


Forma numrica
(1)s M 2E
Bit de sinal s determina se nmero negativo ou
positivo
Mantissa M um valor fracionrio no intervalo
[1.0,2.0), na representao normalizada.
Expoente E
Codificao
s exp frac

bit mais significativo s


Campo exp codifica E
Campo frac codifica M

3
IEEE 754: Precises de
Ponto Flutuante
s exp frac

Tamanhos
float: exp = 8 bits, frac = 23 bits, s = 1 bit
Total: 32 bits
Faixa de valores: 2-126 at 2127
double: exp =11 bits, frac = 52 bits, s = 1 bit
Total: 64 bits
Faixa de valores: 2-1022 at 21023
Preciso estendida: exp =15 bits, frac = 63 bits,s = 1 bit
Total: 80 bits
Faixa de valores: 2-16382 at 216383
1 bit desperdiado

Padro IEEE 754


Define-se duas representaes:
Normalizada (mais utilizada)

De-normalizada: para representar o 0 e


nmeros cujo mdulo [0, 1)
N t caso, exp = 0
Neste
E = 1 Bias
M = frac

4
Faixa de Valores
Normalizado De-normalizado Normalizado

] [
-1 0 1

De-normalizado: f (-1,1)
exp = 0,
0 M = frac
f
Normalizado: f (-,1] [1, +)
exp 0 (00..01 11..10), M= 1.0 + frac

Mantissa na rep. normalizada


O padro estabelece uma representao
normalizada, com valores 1 <= M < 2. Isto
possvel escolhendo
possvel, escolhendo-se
se o Exp adequadamente.
adequadamente
Como a mantissa sempre da forma
M = 1+ frac
Armazena-se apenas a parte fracionria frac. Ou
seja, a soma com 1 sempre implcita.

Exemplos:
frac = 0...02 = 010 M = 1.0
frac = 0101...02 = 0.25 + 0.062510 M = 1,03125

5
O Exponte na rep. normalizada
O Expoente E, pode ser positivo ou negativo,
mas no armazenado em complemento a dois
Usa
Usa-se
se a representao
representao excesso
excesso (ou bias)
E = Exp Bias
Exp : valor sem sinal representado por exp
Bias : valor de excesso
127 em float (Exp: 1254, E: -126127)
1023 em double (Exp: 12046, E: -10221023)
2n-1 1 (no caso geral), onde n o nmero de bits em exp
Exemplos:
exp = 1 E = (1-127) = -126
exp = 127 E = (127-127) = 0
exp = 225 E = (225-127) = 98

Exemplo (preciso simples)


Valor
float F = 15213.0;
1521310 = 111011011011012 = 1.11011011011012 X 213
Mantissa
M = 1.11011011011012
frac = 110110110110100000000002
Expoente
E = 13
exp = E + Bias = 13+ 127 = 140 = 100011002
Sinal: 0
Hex: 4 6 6 D B 4 0 0
Binrio 0100 0110 0110 1101 1011 0100 0000 0000
140: 100 0110 0
15213: 1110 1101 1011 01

6
Exemplo (preciso dupla)
Valor
double D = 178.125 = 128+32+16+2 + 0.125;
178 12510 = 10110010.001
178.125 10110010 0012
1.7812510 = 1.01100100012 X 27
Mantissa
M = 1. 01100100012
frac = 01100100010002
Expoente
p
E = 7
exp = E + Bias = 7+ 1023 = 1030 = 100000001102

0 10000000110 01100100010000000
S exp (11) frac (52)

Valores Especiais

zero S= 0 exp = 0 M=0


+ S=0 exp=111...111 M=0
- S=1 exp=111...111 M=0
NaN(*)
() S=0 exp=111...111
p M0

(*) NaN = Not a Number

7
A aritmtica com esses nmeros
Para qualquer ponto flutuante a vale:
a+ =
a + - = -
+ - = NaN
NaN + a = NaN
-1 = NaN
a / = 0
* =
a / 0 = , se a0
0 / 0 = NaN
/ = NaN
* 0 = NaN

Mais informaes

htt // t
http://steve.holasch.net/cgindex/Ieeefloat.html
h l h t/ i d /I fl t ht l

IEEE Computer Society (1985) IEEE Standard for Binary


Floating-Point Aritmetic, IEEE Std 754-1985.

Comparing floating point numbers, Bruce Dawson.


http://www.cygnus-software.com/papers

Você também pode gostar