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