Logo Passei Direto
Buscar
Material

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Representação em Ponto Flutuante
Belo Horizonte, março de 2011
Introdução
• Muitas aplicações científicas utilizadas na 
engenharia, física, astronomia, cálculo e etc.
• Os dados são números muito grandes:
– Massa da terra.
– A distância entre a terra e a lua.
• Os dados são muito pequenos:
– A massa de um elétron.
– A massa de um átomo.
– A massa de uma molécula.
Introdução
• Valores muito grandes e valores muito pequenos 
seriam difíceis de representar em um sistema 
computacional (máquina (hardware) e programa 
(software)) computador que possui uma 
arquitetura binária.
Exemplo de Número
• Sejam os números: 
– N1 = 0,00000000000000000000435
– N2 = 145700000000000000000000
• Realizando uma operação de adição tem-se:
• S = N1 + N2
• S = 145700000000000000000000,00000000000000000000435
Exemplo de Número
• Tem-se em S um valor com 47 algarismos 
(dígitos) decimais.
• Imagine a representação deste número em 
binário.
• Quantos bits seriam necessários? 
• Como representar a vírgula no computador? 
• Percebe-se que isto se torna impraticável 
(inviável).
Notação Científica
• Para resolver o problema a solução vem da 
matemática.
• Trata-se da notação científica.
• Na computação utiliza-se o termo ponto 
flutuante (float point).
Notação Científica
• Um número em notação científica é o produto 
de dois fatores:
• Onde:
– N é o número que se deseja representar.
– M é a parte fracionária ou mantissa (algarismos 
significativos do número).
– B é a base de exponenciação.
– E é o expoente o seu sinal.
EBMN 
Notação Científica
• A representação do expoente, da base e da 
normalização são definidas pelos fabricantes.
• A representação de um número por meio de 
um produto permite a separar a precisão 
desejada para o valor (algarismos expresso na 
fração ou mantissa) e a grandeza do número 
(expressa pelo expoente).
Notação Científica
• Portanto:
– N1 = 0,435x10-20
– N2 = 0,1457x10+24
• Neste tipo de notação ocorre apenas a 
utilização dos números significativos (435 e 
1457). 
• Os zeros foram substituídos por poucos 
algarismos representados pelo valor do 
expoente.
Notação Científica
• O conceito é o mesmo para qualquer que seja 
a base de numeração. O que tem significado 
diferente da base de representação.
• Seja o número N3 = 1110011,0112
• Representando N3 na forma de notação 
científica tem-se: 0,11100110112x102
+01112(+710)
Notação Científica
• Seja N4 = 1000110010012
• Representando N4 na forma de notação 
científica tem-se: 0,8C916 x1016
+316
• Em sistemas da empresa IBM 370, 434x, 438x 
e outras famílias semelhantes empregam a 
base 16 como a base de exponenciação na 
representação de números em ponto 
flutuante.
Ponto Flutuante
• Em um sistema computacional o valor de um 
número representado em ponto flutuante é 
reconhecido por intermédio do SINAL, da 
MANTISSA e do EXPOENTE, não sendo necessário o 
armazenamento da base de exponenciação, visto 
que esta é igual para todos os números.
• Em uma representação de números em ponto 
flutuante, dois fatores são considerados: 
– A precisão (exatidão) do número, expressa pela 
quantidade de algarismos (dígitos) da mantissa (ou 
fração); e
– A grandeza do número expressa pelo valor do expoente.
Ponto Flutuante
• Cada representação mais a direita tem maior 
precisão que a esquerda adjacente.
• O limite de representação (a grandeza) indica 
quão grande ou quão pequeno é o número 
que está sendo representado. 
• O valor do expoente de uma representação 
em ponto flutuante indica a faixa de grandeza 
do número na representação.
Representação Normalizada
• Para evitar outras interpretações costuma-se 
estabelecer nos sistemas computacionais, uma 
representação padrão normalizada. Onde a 
mantissa é definida sempre como sendo um valor 
que satisfaça a expressão: 1/B≤M≤0 (exceto se 
M=0).
• A mantissa deve ser sempre fracionária (mantissa 
sempre menor que um). O primeiro algarismo após 
a vírgula tem que ser diferente de zero (por que é 
igual ou maior que 1/B).
Representação Normalizada
• Os seguintes valores estão normalizados:
• 2,812510 1,11012
• 0,12510 0,1012
• Os seguintes valores NÃO estão 
normalizados: o primeiro algarismo (dígito) 
depois da vírgula é zero.
• 0,0812510 0,0011012
• 0,0000812516 10110,012
Conversão para Ponto Flutuante
• Para um sistema computacional a representação em 
ponto flutuante é especificada a partir da identificação 
de alguns elementos:
– A quantidade de palavras de dados (total de bits/bytes da 
representação).
– O modo de representação da mantissa (se normalizada, se 
complemento a 2, se sinal magnitude e etc).
– O modo de representação do expoente (se normalizado, se 
complemento a 2, se sinal magnitude e etc).
– A quantidade de bits definida para o expoente e para a 
mantissa.
– A posição no formato do sinal do número, da mantissa e 
do expoente.
IEEE 754
S EXPOENTE MANTISSA
1 8 23
S EXPOENTE MANTISSA
1 11 52
Ponto Flutuante de 32 bits IEEE 754
S EXPOENTE MANTISSA
1 8 23
• S – sinal do número, 1 bit.
• EXPOENTE – 8 bits para a magnitude.
• MANTISSA – 23 bits normalizada.
• B – base de exponenciação igual a 2.
EBMN 
Ponto Flutuante 32 bits – IEEE 754
• A seqüência de bits para representar o 
expoente é obtida por intermédio da soma do 
expoente + deslocamento, que para o formato 
de 32 bits é 7F16 (12710).
• Assim, valores reais de expoente de -12710 a 
+12810 serão representados em valores 
armazenados entre 010 a +25510
Ponto Flutuante 32 bits – IEEE 754
• A normalização é conseguida por intermédio 
do deslocamento da vírgula decimal para a 
direita ou esquerda. 
• Como a base é 2, o bit mais à esquerda da 
vírgula sempre será 1 e pode ser omitido.
Exemplo I – 32 bits
• 10,510 = 01010,12
• A forma normalizada seria: 1,01012 x 2
3. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 01012
• Expoente: 310 + 12710 = 13010 = 100000102
• Sinal: 02
Exemplo I – 32 bits
• 10,510 = 01010,12
• A forma normalizada seria: 1,01012 x 2
3. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 01012
• Expoente: 310 + 12710 = 13010 = 100000102
• Sinal: 02
• 010000010010100000000000000000002
• 4 1 2 8 0 0 0 0
• 41 28 00 00 
Exemplo I – 32 bits
• 10,510 = 01010,12
• A forma normalizada seria: 1,01012 x 2
3. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 01012
• Expoente: 310 + 12710 = 13010 = 100000102
• Sinal: 02
• 010000010010100000000000000000002
• 4 1 2 8 0 0 0 0
• 41 28 00 00 
Exemplo I – 32 bits
• 10,510 = 01010,12
• A forma normalizada seria: 1,01012 x 2
3. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 01012
• Expoente: 310 + 12710 = 13010 = 100000102
• Sinal: 02
• 010000010010100000000000000000002
• 4 1 2 8 0 0 0 0
• 41 28 00 00 
Exemplo I – 32 bits
• A representação de 10,510 em 32 bits ficaria:
– s expoente mantissa
– 010000010010100000000000000000002
– 4 1 2 8 0 0 0 016
– 41 28 00 0016
– 41 28 00 0016
Exemplo II – 32 bits
• -0,7510 = -0,112
• A forma normalizada seria: 1,12 x 2
-1. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 12
• Expoente: -110 + 12710 = 12610 = 011111102
• Sinal: 12
Exemplo II – 32 bits
• A representação de -0,7510 em 32 bits ficaria:
– s expoente
mantissa
– 101111110100000000000000000000002
– B F 4 0 0 0 0 016
– BF 40 00 0016
– BF 40 00 0016
Ponto Flutuante de 64 bits – IEEE 754
S EXPOENTE MANTISSA
1 11 52
• S – sinal do número, 1 bit.
• EXPOENTE – 11 bits para a magnitude.
• MANTISSA – 52 bits normalizada.
• B – base de exponenciação igual a 2.
EBMN 
Ponto Flutuante – 64 bits – IEEE 754
• A seqüência de bits para representar o 
expoente é obtida por intermédio da soma do 
expoente + deslocamento, que para o formato 
de 64 bits é 3FF16 (102310).
• Assim, valores reais de expoente de -102310 a 
+102410 serão representados em valores 
armazenados entre 010 a +204810
Ponto Flutuante – 64 bits – IEEE 754
• A normalização é conseguida por intermédio 
do deslocamento da vírgula decimal para a 
direita ou esquerda. 
• Como a base é 2, o bit mais à esquerda da 
vírgula sempre será 1 e pode ser omitido.
Exempo III – 64 bits
• 10,510 = 01010,12
• A forma normalizada seria: 1,01012 x 2
3. 
Sempre deixando 1 (um) antes da vírgula.
• Mantissa: 01012
• Expoente: 310 + 102310 = 102610 = 
100000000102
• Sinal: 02
Exempo III – 64 bits
• A representação de 10,510 em 64 bits ficaria:
– s expoente mantissa
– 01000000001001010000000000000000 . . . .000000002
– 4 0 2 5 0 0 0 016 0 0
– 40 25 00 00 . . . . 0016
– 40 25 00 00 00 00 00 0016
Exempo IV – 64 bits
• -0,7510 = 0,112
• A forma normalizada seria: 1,12 x 2
-1. Sempre 
deixando 1 (um) antes da vírgula.
• Mantissa: 12
• Expoente: -110 + 102310 = 102210 = 
011111111102
• Sinal: 12
Exempo IV – 64 bits
• A representação de -0,7510 em 64 bits ficaria:
– s expoente mantissa
– 10111111111010000000000000000000 . . . .000000002
– B F E 8 0 0 0 016 0 0
– BF E8 00 00 . . . . 0016
– BF E8 00 00 00 00 00 0016

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?