Buscar

Representação em Ponto Flutuante IEEE-754

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Representação em Ponto 
Flutuante 
1 
Representação em Ponto Flutuante 
•  Aproximação de aritmética de números reais 
•  Codifica números racionais da forma V = x * 2y 
–  útil para computações com valores muito grandes 
(|V| >> 0) ou muito próximos de 0 (|V| << 1) 
•  Padrão IEEE-754 (~1985) 
–  representação de números de ponto flutuante e suas 
operações 
–  adotado atualmente pela maioria dos fabricantes 
–  portabilidade! 
2 
Números Fracionários na Base 2 
•  Notação decimal: 
–  dm dm-1 ... d1 d0 d-1 d-2 ... d-n → Σ 10i * di 
–  12.3410 = 1 * 101 + 2 * 100 + 3 * 10-1 + 4 * 10-2 
•  Notação binária: 
–  bm bm-1 ... b1 b0 b-1 b-2 ... b-n → Σ 2i * bi 
–  101.112 = 1 *22 + 0 *21 + 1 * 20 + 1 * 2-1 + 1 * 2-2 
= 4 + 1 + ½ + ¼ = 5 ¾ = 5.75 
m 
i = -n 
potências POSITIVAS de 10 potências NEGATIVAS de 10 
3 
potências POSITIVAS de 2 potências NEGATIVAS de 2 
m 
i = -n 
ponto/vírgula 
“binário” 
Notação Binária 
–  posições à direita do “ponto binário” correspondem a 
potências negativas de 2 
–  números da forma 0.111111…2 estão próximos de 1.0 
4 
bm	
 bm–1	
 b2	
 b1	
 b0	
 b–1	
 b–2	
 b–3	
 b–n	
• • •	
• • •	
 .	
1	
2	
4	
2m–1	
2m	
• • •	
• • •	
1/2	
1/4	
1/8	
2–n	
Deslocamento do Ponto Binário 
•  Deslocar o ponto para a esquerda divide o valor 
por 2: 
–  101.112 = 4 + 1+ ½ + ¼ = 5 ¾ = 5.75 
–  10.1112 = 2 + ½ + ¼ + 1/8 = 2 7/8 = 2.875 = 5.75/2 
 
 
 
•  Deslocar o ponto para a direita multiplica o valor 
por 2: 
–  101.112 = 4 + 1+ ½ + ¼ = 5 ¾ = 5.75 
–  1011.12 = 8 + 0 + 2 + 1 + ½ = 11 ½ = 5.75 * 2 
5 
Conversão binário → decimal 
•  1.001 = 1 * 20 + 1 * 2-3 = 1 + 1/8 = 9/8 = 1.125 
•  101.111 = 1 * 22 + 1 * 20 + 1 * 2-1 + 1 * 2-2 + 1 * 2-3 = 
 5 + 1/2 + 1/4 + 1/8 = 5 + 7/8 = 5.875 
 
•  11.0011 = 1 * 21 + 1 * 20 + 1 * 2-3 + 1 * 2-4 = 
 3 + 1/8 + 1/16 = 3 + 3/16 = 3.1875 
 
6 
Conversão decimal→ binário (1) 
•  Idéia básica: representar um número como uma fração 
da forma x / 2k 
–  encontra a representação de x e posiciona o ponto “k” casas a 
partir da direita 
•  0.125 = 0.25/2 = 0.5/4 = 1/8 = 1/ 23 → 0.0012 
•  0.75 = 1.5/2 = 3/4 = 3/22 → 0.11 
•  2.6875 = 5.375/2 = 10.75/4 = 21.5/8 = 43/16 = 43/24 
 → 10.1011 
 
7 
desloca ponto 3 casas 
desloca ponto 2 casas 
desloca ponto 4 casas 
Conversão decimal→ binário (2) 
•  Parte fracionária: 
0.d1d2d3 ... dm = 0.b1b2b3... bn 
x .d´1d´2d´3 ... d´k b1 .b2b3... bn 
 0.d´1d´2d´3 ... d´k = 0.b2b3... bn 
 y .d´1d´2d´3 ... d´k b2 .b3... bn 
 
 
8 
0.x 
* 2 * 2 
* 2 * 2 
0.xy 
0 
1 
0 
1 
* 2 * 2 
Exemplo de conversão 
 0.625 = 0.b1b2b3... bn 
 
 1 .25 b1 .b2b3... bn 
 0.25 = 0.b2b3... bn 
 
 0 .5 b2 .b3... bn 
 
 0.5 = 0.b3... bn 
 
 
 1 .0 b3 .b4... bn 
 
 
•  0.101 = 1 * 2-1 + 1 * 2-3 = 1/2 + 1/8 = 5/8 = 0.625 9 
0.1 
* 2 * 2 
* 2 
0.10 
* 2 
* 2 * 2 0.101 
Limitações da Representação 
•  Com codificação de tamanho finito a notação decimal 
não pode representar números como 1/3 ou 5/7 
–  não podem ser escritos como 
•  Da mesma forma, a notação binária somente pode 
representar números escritos como 
–  1/8 (= 0.125) 0.0012 
–  5.625 (= 45/8) 101.1012 
 
•  Outros números devem ser aproximados 
–  parte fracionária possui sequências repetidas indefinidamente 
–  quanto maior a representação binária (parte fracionária), maior a 
acurácia (precisão) 
10 
b k ⋅ 2 k 
k = - n 
m 
∑ 
d k ⋅ 10 k 
k = - n 
m 
∑ 
0.2 * 2 = 0 .4 
0.4 * 2 = 0 .8 
0.8 * 2 = 1 .6 
0.6 * 2 = 1 .2 
0.2 * 2 = 0 .4 
0.4 * 2 = 0 .8 
Utilizando o algoritmo de 
conversão 
0.0011 0011 0011... 
.
.
. 11 
Representação IEEE 754 
•  Notação posicional não é adequada para números muito 
grandes ou próximos de 0 
–  sequências muito grandes de bits 
 
•  A idéia é representar o número na forma x * 2 y → para 
um par adequado de valores (x,y) 
–  para obter a melhor precisão 
•  Define três precisões: 
–  Single precision (float) 32 bits (precisão 24 bits) 
–  Double precision (double) 64 bits (precisão 53 bits) 
–  Double extended precision 80 bits (precisão 63 bits) 
•  esta última em arquiteturas Intel Pentium e 68000 
12 
•  Forma numérica 
(–1)s M 2E 
 
–  Bit de sinal s determina se número é negativo ou positivo 
–  Mantissa M é um valor fracionário 1 <= M < 2 
–  Expoente E especifica potência positiva ou negativa de 2 
 
•  Bit mais significativo é s → s = 1 : n° negativo, s = 0 : n° positivo 
•  Campo exp codifica E 
•  Campo frac codifica M 
13 
s exp frac 
Codificação 
Padrão IEEE: precisões 
– float (32 bits): exp = 8 bits, frac = 23 bits, s = 1 bit 
•  faixa de valores: 2-126 até 2127 
– double (64 bits): exp =11 bits, frac = 52 bits, s = 1 bit 
•  faixa de valores: 2-1022 até 21023 
–  precisão estendida (80 bits): exp =15 bits, frac = 63 bits, s = 1 bit 
•  faixa de valores: 2-16382 até 216383 
•  menos comum 
14 
s exp frac 
Padrão IEEE: representações 
•  O valor codificado é dividido em 3 categorias, 
dependendo do valor de exp: 
–  valor normalizado (mais comum) 
–  valor denormalizado (exp == all 0´s) 
–  valores especiais (exp = all 1´s) 
•  Valor denormalizado (exp = 0): 
–  representação de 0 (s = exp = frac = 0) 
–  representação de números muito próximos a 0 (-1 < x < 1) 
•  Valores especiais: 
–  “infinito” e NaN (Not a Number) 
15 
Valores Normalizados 
 
M = 1 + frac → 1 é “implícito” (1 <= M < 2) 
• frac = 00…..0 → M = 1.0 
• frac = 01010…0 → M = 1 + 1/4 + 1/16 = 1 + 5/16 = 1.3125 
E = exp – Bias → representação “em excesso” 
– exp é um valor sem sinal e Bias = 2k-1 - 1 
– float (precisão simples): Bias = 127 (28-1 – 1 = 27 – 1 = 128 – 1) 
– double(precisão dupla): Bias = 1023 (211-1 – 1 = 210 – 1 = 1024 – 1) 
precisão simples: precisão dupla: 
exp = 1 → E = 1 – 127 = -126 exp = 1 → E = 1 – 1023 = -1022 
exp = 127 → E = 127 – 127 = 0 exp = 1023 → E = 1023 – 1023 = 0 
exp = 254 → E = 254 – 127 = 127 exp = 2046 → E = 2046 – 1023 = 1023 
16 
s exp ≠ 0 & ≠ 1´s frac (–1)s M 2E 
Exemplo 1 (precisão simples) 
• float f = 15213.0; 
 
1521310 = 111011011011012 = 1.11011011011012 * 2 13 
• frac (23 bits) = 110110110110100000000002 
• exp (8 bits) = E + Bias = 13 + 127 = 140 = 100011002 
• s = 0 
 
 
17 
Binário 0100 0110 0110 1101 1011 0100 0000 0000 
Hex: 4 6 6 D B 4 0 0 
13 casas para a esquerda M 
E 
0 10001100 11011011011010000000000 
31 30 23 22 0 
Exemplo 2 (precisão simples) 
• frac = 10000001110012 → M = 1.1000000111001 
 M = 1 + 1/2 + 1/256 + 1/512 + 1/1024 + 1/8192 
 = 1 + 4153/8192 
• exp = 10001100 = 8C16 = 128 + 12 = 140 
 E = 140 – 127 = 13 
 
• V = (-1)0 * (1 + 4153/8192) * 213 
 = ((8192 + 4153)/8192) * 8192 = 1234510 
 
 
 
 
18 
Hex: 4 6 4 0 E 4 0 0 
Binário 0100 0110 0100 0000 1110 0100 0000 0000 
0 10001100 10000001110010000000000 
31 30 23 22 0 
Exemplo 3 (precisão dupla) 
• double d = 178.125; 
 
178.12510 = 178 + .125 = 178 + 1/8 = 128 + 32 + 16 + 2 + 2-3 
 = 10110010.0012 = 1.01100100012 * 2 7 
• frac (52 bits) = 0110010001000…0002 
• exp (11 bits) = E + Bias = 7 + 1023 = 1030 = 100000001102 
• s = 0 
 
 
19Binário 0100 0000 0110 0110 0100 0100 0000 0000 … 0000 
Hex: 4 0 6 6 4 4 0 0 00 00 00 00 
7 casas para a esquerda M 
E 
0 10000000110 0110010001000000…0000 
63 62 52 51 0 
Valores Especiais 
•  “infinito”: permite representação de overflow 
–  multiplicação, divisão por 0 
•  NaN (Not a Number) 
–  operações que não tem número real como resultado (√-1 , ∞ - ∞) 
–  pode ser usado para representar dados não inicializados 
•  em C: macros em <math.h> 
20 
zero S= 0 exp = 0 M = 0 
+ ∞ S=0 exp=111...111 M = 0 
- ∞ S=1 exp=111...111 M = 0 
NaN(*) S exp=111...111 M ≠ 0 
Valores Denormalizados 
 
–  representação de 0 e números muito próximos de 0 
 
M = frac → não tem 1 “implícito” (0 <= M < 1) 
E = 1 – Bias 
21 
s exp = 0 frac (–1)s M 2E

Outros materiais

Outros materiais