REPRESENTAÇÃO BINÁRIA E CONVERSÃO Itens adicionais ou redundantes do capítulo sobre conversão e erros
Como é representado um número decimal – notação posicional Veja as potências da base (base 10). Depois da vírgula decimal, os expoentes da base são: -1, -2, -3, -4, ... Isto ainda não é a representação dentro do computador 4/12/2017 17
Base 2 – notação posicional Na base 2, depois do ponto binário, os expoentes da base 2 são: -1, -2, -3, -4, -5, .... Isto não é representação dentro do computador 4/12/2017 17
Converter inteiros de base 10 para representação binária Tabela 1 Conversão de um inteiro de base 10 para representação binária. Exemplo converter o número 11 em base decimal para base binária. Quociente Resto 11/2 5 5/2 2 2/2 1 1/2 Portanto, 4/12/2017 17
Conversão de número inteiro de base 10 em base binária Início Entrada(N)10 i = 0 Dividir N por 2 para ter o quociente Q e resto R ai = R Q = 0? n = i (N)10 = (an. . .a0)2 Fim Inteiro N a ser convertido para o formato binário i=i+1, N=Q Não Sim 4/12/2017 17
Conversão de decimal fracionário para binário Tabela 2. Conversão de fração de base 10 para representação binária do número decimal fracionário 0,1875. Número Número depois do ponto decimal Número depois do ponto decimal 0,375 0.375 0.75 1.5 0.5 1.0 0.0 Portanto, THG picture 4/12/2017 17
4/12/2017 17 Início Fração F a ser convertida para formato binário Entrada (F)10 Multiplicar F por 2 para obter o número S antes da decimal; e T depois da decimal T ai = R É T =0? n = i (F)10 = (a-1. . .a-n)2 Fim Fração F a ser convertida para formato binário Não Sim 4/12/2017 17
Conversão de número de base decimal, com parte inteira e fracionária para binário Converter separadamente a parte inteira e fracionária Parte inteira Parte fracionária Ajuntando as partes: 4/12/2017 17
Número depois da decimal Número antes da decimal Nem todos os números fracionários decimais podem ser representados exatamente Tabela 3. Conversão de fração decimal para representação binária. Exemplo para a fração decimal 0,3 . Número Número depois da decimal Número antes da decimal 0.6 1.2 0.2 0.4 0.8 1.6 Veja que o 0.6 vai repetir periodicamente 4/12/2017 17
Uma outra forma de ver a conversão Converter para base 2 A maior potência de 2 que cabe em 11 é 2x2x2 4/12/2017 17
Conversão da parte fracionária O maior fracionário que cabe em 0,1875 é 0,125 = 2^(-3) O maior fracionário que cabe em 0,0625 é 0,0625 = 2^(-4) Ajuntando as duas partes, tem-se: 4/12/2017 17
ARITMÉTICA DE PONTO FLUTUANTE Como se faz no computador Seja x um número qualquer na base em aritmética de ponto flutuante de t dígitos: x = ±(.d1 d2 ... dt) e Onde: (i) ±(.d1 d2 ... dt) e é uma fração na base (ii) dj {0,1,2,..., -1} (iii) e [m, M] (iv) t = número máximo de dígitos da mantissa 4/12/2017 17
Um número não pode ser representado se o expoente “e”(de beta) se estiver fora dos limites m e M. “Underflow” se e < m “Overflow” se e > M Números cuja representação em aritmética de ponto flutuante de t dígitos extrapolam os t dígitos da mantissa são armazenados por arredondamento ou por truncamento. truncagem: descartar todos os decimais a partir de um específico arredondamento: para cima, descartado para > 5 para baixo, descartado para < 5 0,57 0,5 0,52 0,5 0,57 0,6 0,52 0,5 4/12/2017 17
Representação por arredondamento Overflow e underflow Exemplo: Seja um sistema de aritmética de ponto flutuante cuja mantissa tenha t=3 dígitos, base =10, m=-4 e M=4. x Representação por arredondamento Representação por truncamento 1.25 0.12510 10.053 0.101102 0.100102 -238.15 -0.238103 2.71828 0.272101 0.271101 0.000000007 Underflow 718235.82 Overflow 4/12/2017 17
Operação com ajuste de ponto decimal Exemplo: Dados: x = 0.937104 y = 0.127102, calcule x + y para um sistema em que t=4 (número de dígitos significativos na mantissa) e =10 (base 10 ou decimal). x + y = 0.9370104 + 0.0013104 = 0.9383104 4/12/2017 17
Propagação de erros 1/2 Exemplo: Suponha-se que as operações a seguir sejam processadas em uma máquina com 4 dígitos significativos e fazendo-se: x1 = 0,3491x104 e x2 = 0,2345x100, tem-se: (x2 + x1) − x1 = = (0,2345x100 + 0,3491x104) − 0,3491x104 = 0,3491x104 − 0,3491x104 = 0,0000 x2 + (x1 − x1) = = 0,2345x100 + (0,3491x104 − 0,3491x104) = 0,2345 + 0,0000 = 0,2345 4/12/2017 17
Propagação de erros 2/2 Os dois resultados são diferentes, quando não deveriam ser, pois a adição é uma operação distributiva. (x2 + x1) − x1 = 0,0000 e x2 + (x1 − x1) = 0,2345 Causa da diferença arredondamento feito na adição (x2 + x1), cujo resultado tem 8 dígitos A máquina só armazena 4 dígitos (desprezando os menos significativos) A propriedade da adição (x1+x2)-x1=x2 (x1-x1) não vale no caso, para matemática com número pequeno de dígitos 4/12/2017 17