Ponto Flutuante

Propaganda
Aula 9
Introdução à Computação
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante
Precisamos de uma maneira para representar
Números com frações, por exemplo, 3,1416
Números muito pequenos, por exemplo, 0,00000001
Números muito grandes, por exemplo, 3,15576 x 109
Uma boa representação para os valores expressos
anteriormente é a notação científica.
3,0 x 100
No caso de números binários a notação científica
equivalente seria:
1,1 x 21
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante
Representação
Sinal, expoente, significando
(-1)sinal x fração x 2expoente
Mais bits para a fração fornece mais precisão
Mais bits para o expoente, aumenta o range de
valores.
Os computadores, em geral, utilizam o padrão de ponto
flutuante IEEE 754.
Precisão única (float): expoente de 8 bits, fração de
23 bits.
Precisão dupla (double): expoente de 11 bits, fração
de 52 bits.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante
Representação de um número de ponto flutuante.
Expoentes também podem ser negativos, mas eles não utilizam a
representação complemento de 2.
Na verdade, expoentes são “deslocados” para facilitar a
classificação
A menor representação negativa é formada por 0s.
A maior representação positiva é formada por 1s.
Logo, o número em ponto flutuante é calculado desta forma:
(-1)sinal x fração x 2(expoente – desvio)
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto flutuante
Quando analisamos um número de ponto
flutuante considerando o bit de sinal como
bit significativo, a parte relativa a fração
passa a receber o nome de significando.
Se o número é negativo, é adicionado 1 a
fração(.xxxx), caso contrário 0.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto flutuante: Operações
aritméticas
Operações aritméticas envolvendo ponto
flutuantes sofrem do mesmo problema
apresentado nas operações inteiras
(overflow).
Além de overflow, operações de ponto
flutuante pode também resultar em
underflow
Underflow é quando o resultado obtido é
pequeno demais para ser representado em um
número de ponto flutuante.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante: Arredondamento
Além do underflow, podemos ter
problemas
relativo
a
forma
de
arredondamento.
Basicamente existem quatro formas de
arredondamento:
Sempre arredondar para cima.
Sempre arredondar para baixo.
Truncamento.
Arredondar para o próximo par.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto Flutuante - exemplo
(+6132,78910)
Fração: +0.6132789
Expoente: +04
Expoente: posição real do ponto decimal
Quatro pts a direita do ponto decimal (na
fração)
Notação científica: + 0.6132789 x 10+4
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Ponto flutuante: generalização
Generalizando: F × 10E
F (fração)
E (expoente)
Apenas F e E são fisicamente representados
Desnecessário o resto
Binário: mesmo padrão (apenas na base
2)
(+1001.112)
Fração (8 bits): 01001110
Expoente (6 bits): 000100
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Operações em Ponto Flutuante
Suporte a números inteiros com e sem sinal.
Suporte a números fracionários: 3,1414, 0,00001 etc.
Notação científica: 1,34 x 103.
Números normalizados: 1 dígito antes do ponto decimal.
Números binários também podem ser normalizados.
Ponto decimal / ponto binário.
Aritmética com números normalizados: aritmética de
ponto flutuante.
Em C: “float”.
Formato: 1,xxxxxxxx2 × 2yyyy.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Padrão IEEE 754
Torna implícito o “1” à esquerda do ponto
binário.
Quando o expoente for zero, o hardware
não considera o primeiro bit “1” implícito,
para permitir a representação do número
“0” em ponto flutuante.
N = (−1) S (1 + Mantissa ) × 2 E
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Padrão IEEE 754
Deve permitir comparações rápidas.
Seria melhor: o menor coeficiente possível valer
00000000, e o maior 11111111.
Modificação:
Subtrair 127 (peso) do exponente.
Representação de –1: -1+127=-1+01111111=01111110.
+1=+1+127=100000002.
Formato:
S
N = (−1) × (1 + Mantissa ) × 2
Peso para precisão dupla: 1.023.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
( E − Peso )
Exemplo 1
1. Representar o número -0,7510 em ponto
flutuante e precisão simples.
2. Representar o número 1,7510 em ponto
flutuante e precisão simples.
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Resposta da 1
1a fase: converter para binário:
0,75 x 2 = 1,5 → 1
0,5 x 2 = 1,0 → 1
-0,7510 = -0,112 = -0,11 x 20 = -1,1 x 2-1
Em precisão simples:
N = (−1) S × (1 + Mantissa ) × 2( E − Peso )
Resultado:
Representação:
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Exemplo
Converter a palavra abaixo em ponto
flutuante para número
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Resposta
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Operações Lógicas
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Operações Lógicas
Operações lógicas com binários
AND (conjunção, 2 operandos)
OR (disjunção, 2 operandos)
XOR (ou exclusivo, 2 operandos)
NOT (negação, 1 operando)
Três notações com operadores
In-fixa (operador entre argumentos:
3 + 4)
Pós-fixa (oper. sucede argumentos:
3 4 +)
Pré-fixa (oper. precede argumentos: + 3 4)
Esta (Notação Polonesa Reversa) usada em LISP
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
AND
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
OR
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
XOR
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
NOT
NOT: operador unário (apenas 1
argumento)
not 0 = 1
not 1 = 0
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Um exemplo
1011 0101 and 1110 1110
ADS – IFBA
www.ifba.edu.br/professores/antoniocarlos
Download