representarepresentaçção em ponto flutuanteão em ponto...

22
Sistemas de Computação Representação em Ponto Flutuante

Upload: others

Post on 16-Nov-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Representação em Ponto FlutuanteRepresentação em Ponto Flutuante

Page 2: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Representação IEEE para ponto flutuante

• IEEE Standard 754– Estabelecido em 1985 como padrão uniforme para aritmética em ponto

flutuante– A maioria das CPUs suporta este padrão

• Foi projetado para criar um padrão com facilidades para operações numéricas

Page 3: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Números binários fracionários

• Representação– Bits à direita da “vírgula binária” representam potências fracionárias de 2– Representa o número:

bi bi–1 b2 b1 b0 b–1 b–2 b–3 b–j• • •• • • .124

2i–12i

• • ••••

1/21/41/8

2–j

bk 2k

k j

i

Page 4: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Exemplos de números binários fracionários

• Valor Representação5-3/4 101.1122-7/8 10.111263/64 0.1111112

• Observações– Divide por 2 deslocando para a direita– Multiplica por 2 deslocando para a esquerda– Números da forma 0.111111…2, logo abaixo de 1.0

• 1/2 + 1/4 + 1/8 + … + 1/2i + … 1.0• Use notação 1.0 –

Page 5: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Limitação na representação dos números

• Somente números na forma x/2k são representados corretamente

• Outros números possuem representação com bits repetidos

• Valor Representação1/3 0.0101010101[01]…21/5 0.001100110011[0011]…21/10 0.0001100110011[0011]…2

Page 6: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Representação em ponto flutuante

• Forma numérica– –1s M 2E

• Bit de sinal s determina se o número é negativo ou positivo• O significando M é normalmente um valor fracionário na faixa [1.0,2.0).• O expoente E é um inteiro positivo ou negativo

• Codificação

– MSB é o bit de sinal– O campo exp codifica E– O campo frac codifica M

s exp frac

Page 7: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Precisão em ponto flutuante

• Tamanhos– Precisão simples: 8 bits para exp, 23 bits para frac

• 32 bits no total– Precisão dupla: 11 bits para exp, 52 bits para frac

• 64 bits no total

• Precisão estendida: 15 bits para exp bits, 63 bits para frac

• Somente em máquinas compatíveis com Intel• 80 bits no total

– 1 bit não utilizado

Page 8: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Valores numéricos normalizados

• exp 000…0 e exp 111…1

• Representação em excesso de n para expoente E = Exp – Bias

• Exp : inteiro sem sinal representado por exp • Bias : Valor de n

– Precisão simples: 127 (Exp: 1…254, E: -126…127)– Precisão dupla: 1023 (Exp: 1…2046, E: -1022…1023)– Em geral: Bias = 2e-1 - 1, onde e é o número de bits do expoente

• Significando codificado com 1 implícito antes da vírgula

M = 1.xxx…x2• xxx…x: bits do campo frac• Mínimo quando 000…0 (M = 1.0)• Máximo quando 111…1 (M = 2.0 – )

Page 9: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Exemplo de codificação em ponto flutuante

• ValorFloat F = 15213.0;

– 1521310 = 111011011011012 = 1.11011011011012 213

• SignificandoM = 1.11011011011012frac = 110110110110100000000002

• ExpoenteE = 13Bias = 127Exp = 140 = 100011002

Representação em ponto flutuante Hexa: 4 6 6 D B 4 0 0 Binário: 0100 0110 0110 1101 1011 0100 0000 0000

140: 100 0110 0

15213: 1110 1101 1011 01

Page 10: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Valores denormalizados

• exp = 000…0

• Valor– Valor do expoente E = –Bias + 1– Valor do significando M = 0.xxx…x2

• xxx…x: bits do campo frac

• Casos– exp = 000…0, frac = 000…0

• Representa o valor 0• Existem duas representações: +0 e –0

– exp = 000…0, frac 000…0

• Números muito perto de 0.0• Quanto menor, maior perda de precisão• “Underflow gradual”

Page 11: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Valores especiais

• exp = 111…1

• Casos– exp = 111…1, frac = 000…0

• Representa o valor(infinito)• Operações em que ocorrem overflows• Positivo e negativo

• Ex., 1.0/0.0 = 1.0/0.0 = +, 1.0/0.0 = – exp = 111…1, frac 000…0

• Not-a-Number (NaN)• Representa o caso quando não se pode determinar um valor

numérico• Ex., sqrt(–1),

Page 12: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Visualização da codificação de números reais em ponto flutuante

NaNNaN

+

0

+Denorm +Normalizados-Denorm-Normalizados

+0

Page 13: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Exemplo de ponto flutuante

• Representação com 8 bits– o bit de sinal é o bit mais significativo– os quatro próximos bits representam o expoente em excesso de 7– os três últimos bits representam o campo frac

• Mesma forma geral do padrão IEEE– normalizado, denormalizado– representação do 0, NaN, infinito

s exp frac02367

Page 14: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Valores relativos ao expoente

Exp exp E 2E

0 0000 -6 1/64 (denorms)1 0001 -6 1/642 0010 -5 1/323 0011 -4 1/164 0100 -3 1/85 0101 -2 1/46 0110 -1 1/27 0111 0 18 1000 +1 29 1001 +2 410 1010 +3 811 1011 +4 1612 1100 +5 3213 1101 +6 6414 1110 +7 12815 1111 n/a (inf, NaN)

Page 15: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Faixa de valores

s exp frac E Value

0 0000 000 -6 00 0000 001 -6 1/8*1/64 = 1/5120 0000 010 -6 2/8*1/64 = 2/512…0 0000 110 -6 6/8*1/64 = 6/5120 0000 111 -6 7/8*1/64 = 7/5120 0001 000 -6 8/8*1/64 = 8/5120 0001 001 -6 9/8*1/64 = 9/512…0 0110 110 -1 14/8*1/2 = 14/160 0110 111 -1 15/8*1/2 = 15/160 0111 000 0 8/8*1 = 10 0111 001 0 9/8*1 = 9/80 0111 010 0 10/8*1 = 10/8…0 1110 110 7 14/8*128 = 2240 1110 111 7 15/8*128 = 2400 1111 000 n/a inf

mais perto do zero

maior denormmenor norm

mais perto do 1 para baixomais perto do1 para cima

maior norm

Números denormalizados

Números normalizados

Page 16: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Distribuição dos valores

• Formato de 6 bits tipo padrão IEEE– e = 3 bits para expoente – f = 2 bits para significando– Excesso de 3

• Distribuição mais densa em direção ao zero.

-15 -10 -5 0 5 10 15

Denormaliz. Normaliz. Infinito-1 -0.5 0 0.5 1

Page 17: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Números interessantes

• Descrição exp frac Valor numérico

• Zero 00…00 00…00 0.0• Menor Pos. Denorm. 00…00 00…01 2– {23,52} 2– {126,1022}

– Simples 1.4 X 10–45

– Dupla 4.9 X 10–324

• Maior Denorm. 00…00 11…11 (1.0 – ) 2– {126,1022}

– Simples 1.18 X 10–38

– Dupla 2.2 X 10–308

• Menos Pos. Normalizado 00…01 00…00 1.0 2– {126,1022}

– Maior que o maior denormalizado• Um 01…11 00…00 1.0• Maior Normalizado 11…10 11…11 (2.0 – ) 2{127,1023}

– Simples 3.4 1038

– Dupla 1.8 10308

Page 18: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Propriedades especiais da codificação

• Zero em PF é o mesmo que Zero inteiro– Todos bits = 0

• Pode-se utilizar comparação entre inteiros sem sinal

– Compara bits de sinal– Considera -0 = 0– NaNs são problemáticos

• São maiores que qualquer outro número• Que resposta deve ser dada ?

Page 19: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Operações em ponto flutuante

• Visão conceitual– Calcula resultado exato– Ajusta resultado para precisão desejada

• Se exponente muito grande, pode ocorrer overflow• Pode ocorrer arredondamento, para ajuste ao tamanho do campo frac

• Modos de arredondamento$1.40 $1.60 $1.50 $2.50 –$1.50

Zero $1 $1 $1 $2 –$1Round down (-) $1 $1 $1 $2 –$2Round up (+) $2 $2 $2 $3 –$1Nearest Even (default) $1 $2 $2 $2 –$2

Page 20: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Multiplicação em ponto flutuante

• Operandos(–1)s1 M1 2E1 * (–1)s2 M2 2E2

• Resultado(–1)s M 2E

– Sinal: s1 ^ s2– Significando M: M1 * M2– Expoente E: E1 + E2

• Ajustando– Se M 2, desloca M para direita, incrementa E– Se E fora da faixa, overflow – Arredonda M para ajuste ao campo frac

• Implementação– Tarefa mais trabalhosa é multiplicar os significandos

Page 21: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Soma em ponto flutuante

• Operandos(–1)s1 M1 2E1

(–1)s2 M2 2E2

– Assuma E1 > E2

• Resultado exato(–1)s M 2E

– Sinal s, significando M: • Resultado de alinhamento com sinal & soma

– Expoente E: E1

• Ajuste– Se M 2, desloca M para a direita, incrementa E– Se M < 1, desloca M para a esquerda k posições, decrementa E de k– Overflow se E fora da faixa– Arredonda M para ajuste ao campo frac

(–1)s1 M1

(–1)s2 M2

E1–E2

+

(–1)s M

Page 22: RepresentaRepresentaçção em Ponto Flutuanteão em Ponto ...simone/scminter/contaulas/6_FLOAT.pdfSistemas de Computa ção N ú meros bin á rios fracion á rios • Representa ç

Sistemas de Computação

Ponto flutuante em C

• C fornece dois níveisfloat precisão simplesdouble precisão dupla

• Conversões– Casting entre int, float, e double modifica valores numéricos– Double ou float para int

• Trunca parte fracionária• Arredonda para zero• Não definido quando estiver fora da faixa

– Geralmente satura para TMin ou TMax– int para double

• Conversão exata, desde que int tenha tamanho de palavra 53 bits– int para float

• Será arredondado de acordo com modo de arredondamento