Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Fundamentos de Matemática para Computação FMC Prof.a Dr.a Erika Coelho erikamorais@inf.ufg.br Instituto de Informática Universidade Federal de Goiás Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Representação computacional de números Como vimos, a representação de números inteiros (como 0, 1, 35, 617, 313, 25.987, 13.500) pode ser feita facilmente utilizando um conjunto de bits, organizados em bytes. Os números racionais podem ser representados por pares de inteiros: o numerador e o denominador. Esta representação é precisa, mas é inconveniente do ponto de vista aritmético. Sistemas que representam os números racionais dessa forma têm sido chamados de simbólicos. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Representação computacional de números Os números reais (como 1,25 e 38,313) requerem uma forma alternativa de representação. Esta forma alternativa de representação considera diferentes componentes do número. Embora seja comum expressar os números reais apenas com apoio da vírgula para separar a parte inteira da parte real, outras versões podem ser consideradas. Para a maioria dos casos, os números reais são armazenados usando representação binária. Há dois métodos: ponto fixo e ponto flutuante. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 1 (Representação de números reais) −1, 25 = −1, 25 · 100 = −0, 125 · 101 = −0, 0125 · 102. 38, 313 = 38, 313 · 100 = 0, 38313 · 102 = 0, 038313 · 103. 3, 1416 = 3, 1416 · 100 = 0, 31416 · 101 = 0, 031416 · 102. 82, 0 = 82, 0 · 100 = 0, 82 · 102 = 0, 082 · 103. Atenção à notação Na notação brasileira a vírgula é utilizada para separar a parte inteira da parte fracionária de um número real. O uso do ponto é um facilitador introduzido para auxiliar na visualização do valor apresentado. A notação estadunidense também utiliza ponto e vírgula, mas faz uso inverso: o ponto separa a parte inteira da fracionária e a vírgula é utilizada para auxiliar na visualização do número. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto fixo A aritmética de ponto fixo é assim chamada porque a faixa de números que pode representar um determinado valor é fixa, ou seja, a posição da vírgula é predeterminada. Todos os valores representados em ponto fixo para uma determinada operação possuem a mesma quantidade de algarismos inteiros e fracionários. A notação usada em computadores para a representação em ponto fixo, é o complemento de 2. Não possui dupla representação para o zero. Proporciona uma maior velocidade de cálculo se comparada às outras notações. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto fixo Os valores devem ser representados em uma sequência de bits: SN|Parte inteira|Parte fracionária. 1 bit para o sinal, um grupo de bits para representar o número antes da vírgula e um grupo de bits para representar o número após a vírgula. O sinal é 0 para positivo e 1 para negativo. Faixa: aproximadamente de 2−16 a 215. É bastante limitado quanto a faixa que se pode armazenar. É atualmente pouco usado para computação numérica. Entretanto, microcontroladores com ponto fixo são mais econômicos, possuem circuitos internos mais simples e necessitam de menos memória. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 2 10,5 em ponto fixo: 23 22 21 20 2−1 2−2 2−3 0 1 0 1 0 1 0 0 sinal parte inteira parte fracionária 34,0625 em ponto fixo: 25 24 23 22 21 20 2−1 2−2 2−3 2−4 0 1 0 0 0 1 0 0 0 0 1 sinal parte inteira parte fracionária Exercício 1 Qual a representação de -23,75 em ponto fixo? Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 3 (Ponto fixo) Para uma precisão de 32 bits o número 11 2 = 5, 5 pode ser representado como |0|000000000000101|1000000000000000|. Exercício 2 (Ponto fixo) Represente o número 1 16 em ponto fixo com 32 bits. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto flutuante É baseado na notação exponencial ou científica. Um número x é representado por x = ± · d1d2d3 · · · dp ×B e, em que: d′is são os dígitos da parte fracionária; 0 ≤ di ≤ B − 1, d1 6= 0; B é o valor da base; p é o número de dígitos; e é um expoente inteiro. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto flutuante Um número de ponto flutuante tem três partes: o sinal, a parte fracionária, chamada de significando ou mantissa, e o expoente. Essas três partes têm um comprimento total fixo que depende do computador e do tipo do número: precisão simples ou dupla. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 4 8210 = 10100102 = + · 1010010 × 2 7 1521310 = 111011011011012 = + ·111011011011012 ×2 14 Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 5 Considere um computador hipotético com dois dígitos (p = 2), base B = 2 e expoente na faixa −1 ≤ e ≤ 2. Como d1 6= 0, eles serão da forma: ± · 102 × 2 e ou ± ·112 × 2 e, 1− ≤ e ≤ 2. Considerando a conversão de binário para decimal temos, ·102 = 1× 2 −1 + 0× 2−2 = 1 2 ·112 = 1× 2 −1 + 1× 2−2 = 3 4 Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo Então os únicos números positivos representáveis neste computador são: ·102 × 2 −1 = 1/2× 2−1 =1/4 ·112 × 2 −1 = 3/4× 2−1 3/8 ·102 × 2 0 = 1/2× 1 =1/2 ·112 × 2 0 = 3/4× 1 3/4 ·102 × 2 1 = 1/2× 2 =1 ·112 × 2 1 = 3/4× 2 3/2 ·102 × 2 2 = 1/2× 4 =2 ·112 × 2 2 = 3/4× 4 3 Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto flutuante O 0 (zero) é representado com todos os dígitos di do significante e do expoente nulos; O conceito de sempre existir um número real entre dois números reais quaisquer não é válido para os números de ponto flutuante. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exemplo 6 (Problemas na representação)Considere a representação binária 0, 610 = 0, 100110011001 · · ·2 e 0, 710 = 0, 10011001100110 · · ·2 . Se eles forem armazenados naquele computador hipotético, eles serão representados igualmente como ·102 × 2 0. Ou seja, tanto 0, 610 quanto 0, 710 serão vistos como 0, 510. São causas de erros em processos numéricos. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Formato IEEE Precisão simples Baseado num sistema de 32 bits. 1 bit para o sinal, 8 para o expoente e 23 bits para a mantissa. Sinal: 0 para positivo e 1 para negativo. e pode ter os valores entre -126 e 127. Exemplo 7 s expoente mantissa Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Precisão simples Representação normalizada O expoente e, pode ser positivo ou negativo, mas não é armazenado o sinal. O valor do expoente é armazenado pela notação com peso, também chamada de notação por excesso de valor. Nesta notação, o valor mais negativo que o expoente pode assumir é representado por 1. Com precisão simples, os limites dos valores são dados por excesso de 127. expoente= 1, · · · , 254, e = −126, · · · , 127 Exemplo 8 (Expoente para precisão simples) Expoente e = −1 : −1 + 12710 = 12610 = 011111102 . Expoente e = +1 : +1 + 12710 = 12810 = 100000002 . Expoente e = +5 : +5 + 12710 = 13210 = 100001002 . Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Precisão simples Representação normalizada A mantissa é armazenada no sentido “da esquerda para a direita”. É armazenada na forma normalizada, de forma que o primeiro bit em 1 (um) ocorra à esquerda da vírgula. Este bit em 1 (um) não é armazenado, ficando subentendido. Exemplo 9 (Normalização da mantissa para precisão simples) Mantissa 13, 010 : 1101, 02 = 1, 1012 · 2 3. Mantissa 5, 62510 : 101, 1012 = 1, 011012 · 2 2. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Precisão simples Exemplo 10 Considere o valor F = 15213, 0. 1521310 = 111011011011012 = +1·11011011011012×2 13; Mantissa: 11011011011012 ; Como e = 13; Então Expoente= 13 + 127 = 140 = 100011002 Resultado: |0| 1 0 0 0 1 1 0 0| 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 sinal expoente mantissa Então a representação de F = 15213, 0 é: 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Precisão dupla Baseado num sistema de 64 bits. 1 bit para o sinal, 11 para o expoente e 52 bits para a mantissa. Sinal: 0 para positivo e 1 para negativo. e pode ter os valores entre -1022 e 1023. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Precisão dupla Representação normalizada Com precisão dupla, os limites dos valores são dados por excesso de 1023. expoente= 1, · · · , 2046, e = −1022, · · · , 1023 Exemplo 11 (Expoente para precisão dupla) Expoente e = −1 : −1 + 102310 = 102210 = 11111111102 . Expoente e = +250 : +250 + 102310 = 127310 = 100111110012 . Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Precisão dupla Exemplo 12 Considere o valor D = 178, 125. 178, 12510 = 10110010, 0012 = +1 · 01100100012 × 2 7; Mantissa: 01100100012 ; Como e = 7; Então Expoente= 7 + 1023 = 1030 = 100000001102 Resultado: |0| 1 0 0 0 0 0 0 0 1 1 0| 0 1 1 0 0 1 0 0 0 1 0 0 0 · · · 0 0 0 0 sinal expoente mantissa Então a representação de F = 178, 125 é: 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 · · · 0 0 0 0 Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exercício 3 Mostre a representação binária do número −0, 7510 nas precisões simples e dupla no padrão IEEE. −0, 7510 pode ser representado por − 3 4 = − 3 22 . Em binário corresponde a: −(1 2 + 1 4 ) ou −0, 112. Em notação científica na base 2: −0, 112 · 2 0. Em notação científica normalizada na base 2: −1, 12 · 2 −1. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Continuação do Exercício 3 Como o valor com que a base deve ser elevada deve ser -1, o expoente é 126, para que (126-127) resulte em -1. Como a mantissa normalizada é 1, 12, o valor binário é 12 + 0, 100000000000000000000002 . Portanto, em precisão simples: 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0. Em precisão dupla: e = −1 então o expoente será −1 + 1023 = 10222 = 11111111102 . Em precisão dupla (com 52 zeros!): Logo, 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 . . . 0 0 0 0 0 0 0 0. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto flutuante Overflow é o termo corrente na computação para designar que um valor não pode ser representado pois seu valor excede a capacidade de armazenamento disponível. Não importa se este valor é positivo ou negativo. Underflow é o termo para designar que um valor não pode ser representado pois está contido entre 0 (zero) e o menor valor real normalizado representável. Assim, por maior que seja o expoente, ocorre uma descontinuidade na representação dos números na faixa de números próximos a 0. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Ponto flutuante Note que imprecisão é diferente de underflow. A limitação do número de bits para mantissa incorre em perda de precisão do valor efetivo, sendo armazenado um valor aproximado (impreciso) do valor correto. A retirada de um bit da representação do expoente para representação da mantissa aumenta a precisão de representação. Mas a perda de um bit no expoente implica na diminuição da faixa de valores representável. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Representação Numérica Exercício 4 Qual número decimal real é expresso pela seguinte palavra: 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0? O sinal é 1, portanto o número é negativo. O campo de expoente possui 100000012 , que corresponde ao 129. Então e = 2, pois 2 + 127 = 129. A mantissa é dado por 0 1, portanto temos 1 0 1. Assim, temos o número 1, 0 1 · 22 = 1012 = 510. Fundamentos de Matemática para Computação Prof.a Dr.a Erika Coelho Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE Referências Bibliográficas Referências R. D. Fedeli, E. G. F. Polloni e F. E. Peres Introdução à Ciência da Computação. 2a. edição, Cengage Learning, 2010. F. F. Campos, Filho Algoritmos Numéricos. 2a. edição, LTC, 2007. Representação Numérica Ponto Fixo Ponto Flutuante Formato IEEE
Compartilhar