Aula 9 Introdução à Computação
Ponto Flutuante
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 10 9 Uma boa representação para os valores expressos anteriormente é a notação científica. 3,0 x 10 0 No caso de números binários a notação científica equivalente seria: 1,1 x 2 1
Ponto Flutuante Representação Sinal, expoente, significando (-1) sinal x fração x 2 expoente 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.
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)
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.
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.
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.
Ponto Flutuante - exemplo (+6132,789 10 ) 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
Ponto flutuante: generalização Generalizando: F 10 E 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.11 2 ) Fração (8 bits): 01001110 Expoente (6 bits): 000100
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 10 3. 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,xxxxxxxx 2 2 yyyy.
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. S E N = ( 1) (1 + Mantissa) 2
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=10000000 2. Formato: N = ( 1) (1 + Mantissa) Peso para precisão dupla: 1.023. S ( E Peso) 2
Exemplo 1 1. Representar o número -0,75 10 em ponto flutuante e precisão simples. 2. Representar o número 1,75 10 em ponto flutuante e precisão simples.
Resposta da 1 1 a fase: converter para binário: 0,75 x 2 = 1,5 1 0,5 x 2 = 1,0 1-0,75 10 = -0,11 2 = -0,11 x 2 0 = -1,1 x 2-1 Em precisão simples: Resultado: N = ( 1) S (1 + Mantissa) ( E Peso) 2 Representação:
Exemplo Converter a palavra abaixo em ponto flutuante para número
Resposta
Operações Lógicas
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
AND 0 and 0 = 0 0 and 1 = 0 1 and 0 = 0 1 and 1 = 1
OR 0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1
XOR 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0
NOT NOT: operador unário (apenas 1 argumento) not 0 = 1 not 1 = 0
Um exemplo 1011 0101 and 1110 1110