Sistemas de numeração de vírgula flutuante Sistemas de Vírgula Flutuante Luiz C. G. Lopes Departamento de Matemática e Engenharias Universidade da Madeira Análise e Computação Numérica MAT 2 05 – 2007/08 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Definição. Diz-se que um número real x ∈ R\{0} é um número de vírgula flutuante normalizado se forem verificadas as seguintes condições: x = m × βe m = ±0,d1 d2 . . . dp = ±( dβ1 + d2 β2 + ··· + dp β p ), p∈N 1 ≤ d1 ≤ β − 1, 0 ≤ di ≤ β − 1, i = 2, . . . , p emin ≤ e ≤ emax , emin , emax ∈ Z, emin ≤ 0, emax ≥ 1 onde: β é a base do sistema de numeração, β ≥ 2; e é o expoente inteiro da base, sendo emin o menor e emax o maior expoente; m é a mantissa; p é a precisão, isto é, a quantidade máxima de dígitos usados na representação do número, e di , i = 1, . . . , p são os dígitos da mantissa. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Definição. Diz-se que um número real x ∈ R\{0} é um número de vírgula flutuante normalizado se forem verificadas as seguintes condições: x = m × βe m = ±0,d1 d2 . . . dp = ±( dβ1 + d2 β2 + ··· + dp β p ), p∈N 1 ≤ d1 ≤ β − 1, 0 ≤ di ≤ β − 1, i = 2, . . . , p emin ≤ e ≤ emax , emin , emax ∈ Z, emin ≤ 0, emax ≥ 1 onde: β é a base do sistema de numeração, β ≥ 2; e é o expoente inteiro da base, sendo emin o menor e emax o maior expoente; m é a mantissa; p é a precisão, isto é, a quantidade máxima de dígitos usados na representação do número, e di , i = 1, . . . , p são os dígitos da mantissa. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Definição. Chama-se sistema de numeração de vírgula flutuante a união de todos os números de vírgula flutuante com o zero, que não tem representação normalizada e é escrito da seguinte forma: emin 0 = 0, 000 | {z. . . 0} ×β . p Um sistema de numeração de vírgula flutuante de base β, precisão p, tendo emin e emax como limites do domínio de variação do expoente, denota-se por F = F (β, p, emin , emax ). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Definição. Chama-se sistema de numeração de vírgula flutuante a união de todos os números de vírgula flutuante com o zero, que não tem representação normalizada e é escrito da seguinte forma: emin 0 = 0, 000 | {z. . . 0} ×β . p Um sistema de numeração de vírgula flutuante de base β, precisão p, tendo emin e emax como limites do domínio de variação do expoente, denota-se por F = F (β, p, emin , emax ). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Sistemas de vírgula flutuante de algumas antigas calculadoras e computadores (em precisão simples) e formatos estabelecidos na norma IEEE 754: F (β, p, emin , emax ) β p emin emax 10 10 −98 99 HP 41CV HP 48GX 10 12 −499 499 Burroughs B6700 8 13 −51 77 IBM 3090 16 6 −64 63 Cray T-94 2 47 −1022 1023 Cray 1 2 48 −8192 8191 Cray X-MP 2 47 −16385 8190 IEEE (simples) 2 24 −126 127 IEEE (duplo) 2 53 −1022 1023 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Sistemas de vírgula flutuante de algumas antigas calculadoras e computadores (em precisão simples) e formatos estabelecidos na norma IEEE 754: F (β, p, emin , emax ) β p emin emax HP 41CV 10 10 −98 99 HP 48GX 10 12 −499 499 Burroughs B6700 8 13 −51 77 IBM 3090 16 6 −64 63 Cray T-94 2 47 −1022 1023 Cray 1 2 48 −8192 8191 Cray X-MP 2 47 −16385 8190 IEEE (simples) 2 24 −126 127 IEEE (duplo) 2 53 −1022 1023 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Sistemas de vírgula flutuante de algumas antigas calculadoras e computadores (em precisão simples) e formatos estabelecidos na norma IEEE 754: F (β, p, emin , emax ) β p emin emax HP 41CV 10 10 −98 99 HP 48GX 10 12 −499 499 Burroughs B6700 8 13 −51 77 IBM 3090 16 6 −64 63 Cray T-94 2 47 −1022 1023 Cray 1 2 48 −8192 8191 Cray X-MP 2 47 −16385 8190 IEEE (simples) 2 24 −126 127 IEEE (duplo) 2 53 −1022 1023 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Sistemas de vírgula flutuante de algumas antigas calculadoras e computadores (em precisão simples) e formatos estabelecidos na norma IEEE 754: F (β, p, emin , emax ) β p emin emax HP 41CV 10 10 −98 99 HP 48GX 10 12 −499 499 Burroughs B6700 8 13 −51 77 IBM 3090 16 6 −64 63 Cray T-94 2 47 −1022 1023 Cray 1 2 48 −8192 8191 Cray X-MP 2 47 −16385 8190 IEEE (simples) 2 24 −126 127 IEEE (duplo) 2 53 −1022 1023 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Sistemas de vírgula flutuante de algumas antigas calculadoras e computadores (em precisão simples) e formatos estabelecidos na norma IEEE 754: F (β, p, emin , emax ) β p emin emax HP 41CV 10 10 −98 99 HP 48GX 10 12 −499 499 Burroughs B6700 8 13 −51 77 IBM 3090 16 6 −64 63 Cray T-94 2 47 −1022 1023 Cray 1 2 48 −8192 8191 Cray X-MP 2 47 −16385 8190 IEEE (simples) 2 24 −126 127 IEEE (duplo) 2 53 −1022 1023 Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Num sistema de vírgula flutuante F (β, p, emin , emax ), de base β, como o primeiro dígito deve ser diferente de zero, restam (β − 1) dígitos possíveis para a primeira posição após a vírgula, podendo-se ter β dígitos nas restantes (p − 1) posições; assim, o número de mantissas positivas é dado por (β − 1) × β p−1 . Como cada uma dessas mantissas pode ser acompanhada por um dos (emax − emin + 1) expoentes possíveis, a quantidade de números de vírgula flutuante positivos é igual a (β − 1)(β p−1 )(emax − emin + 1). Logo, incluindo os números negativos e o zero, obtém-se a cardinalidade de F : #F = 2(β − 1)(β p−1 )(emax − emin + 1) + 1 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Num sistema de vírgula flutuante F (β, p, emin , emax ), de base β, como o primeiro dígito deve ser diferente de zero, restam (β − 1) dígitos possíveis para a primeira posição após a vírgula, podendo-se ter β dígitos nas restantes (p − 1) posições; assim, o número de mantissas positivas é dado por (β − 1) × β p−1 . Como cada uma dessas mantissas pode ser acompanhada por um dos (emax − emin + 1) expoentes possíveis, a quantidade de números de vírgula flutuante positivos é igual a (β − 1)(β p−1 )(emax − emin + 1). Logo, incluindo os números negativos e o zero, obtém-se a cardinalidade de F : #F = 2(β − 1)(β p−1 )(emax − emin + 1) + 1 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Num sistema de vírgula flutuante F (β, p, emin , emax ), de base β, como o primeiro dígito deve ser diferente de zero, restam (β − 1) dígitos possíveis para a primeira posição após a vírgula, podendo-se ter β dígitos nas restantes (p − 1) posições; assim, o número de mantissas positivas é dado por (β − 1) × β p−1 . Como cada uma dessas mantissas pode ser acompanhada por um dos (emax − emin + 1) expoentes possíveis, a quantidade de números de vírgula flutuante positivos é igual a (β − 1)(β p−1 )(emax − emin + 1). Logo, incluindo os números negativos e o zero, obtém-se a cardinalidade de F : #F = 2(β − 1)(β p−1 )(emax − emin + 1) + 1 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O menor número de vírgula flutuante positivo, num sistema de vírgula flutuante F (β, p, emin , emax ), é: b = 0,1 |00{z . . . 0} ×β emin , p−1 cujo valor decimal é dado por: b = (β emin −1 )10 . O maior número de vírgula flutuante, em F (β, p, emin , emax ), é: B = 0,[β − 1][β − 1] . . . [β − 1] × β emax . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O menor número de vírgula flutuante positivo, num sistema de vírgula flutuante F (β, p, emin , emax ), é: b = 0,1 |00{z . . . 0} ×β emin , p−1 cujo valor decimal é dado por: b = (β emin −1 )10 . O maior número de vírgula flutuante, em F (β, p, emin , emax ), é: B = 0,[β − 1][β − 1] . . . [β − 1] × β emax . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O menor número de vírgula flutuante positivo, num sistema de vírgula flutuante F (β, p, emin , emax ), é: b = 0,1 |00{z . . . 0} ×β emin , p−1 cujo valor decimal é dado por: b = (β emin −1 )10 . O maior número de vírgula flutuante, em F (β, p, emin , emax ), é: B = 0,[β − 1][β − 1] . . . [β − 1] × β emax . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Toda a mantissa tem como primeiro dígito, antes da vírgula, o zero. Logo, |m| < 1. Por outro lado, se |m| < β −1 , não teríamos um número de vírgula flutuante normalizado, pois, para que isto aconteça, o primeiro dígito após a vírgula não pode ser nulo; portanto, |m| ≥ β −1 . Assim, para qualquer mantissa m, vale: β −1 ≤ |m| < 1. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Toda a mantissa tem como primeiro dígito, antes da vírgula, o zero. Logo, |m| < 1. Por outro lado, se |m| < β −1 , não teríamos um número de vírgula flutuante normalizado, pois, para que isto aconteça, o primeiro dígito após a vírgula não pode ser nulo; portanto, |m| ≥ β −1 . Assim, para qualquer mantissa m, vale: β −1 ≤ |m| < 1. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Toda a mantissa tem como primeiro dígito, antes da vírgula, o zero. Logo, |m| < 1. Por outro lado, se |m| < β −1 , não teríamos um número de vírgula flutuante normalizado, pois, para que isto aconteça, o primeiro dígito após a vírgula não pode ser nulo; portanto, |m| ≥ β −1 . Assim, para qualquer mantissa m, vale: β −1 ≤ |m| < 1. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Não levando em conta os diversos códigos para representação dos números negativos inteiros, tem-se que: ∀x ∈ F , −x ∈ F . Deve-se observar que, no caso da representação em complemento de dois, pode-se ter x ∈ F e −x ∈ / F, quando x for o maior inteiro positivo. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Não levando em conta os diversos códigos para representação dos números negativos inteiros, tem-se que: ∀x ∈ F , −x ∈ F . Deve-se observar que, no caso da representação em complemento de dois, pode-se ter x ∈ F e −x ∈ / F, quando x for o maior inteiro positivo. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O conjunto F de números de vírgula flutuante é limitado, finito e discreto. Os números de F não se encontram uniformemente distribuídos, existindo, no entanto, diferentes zonas onde eles aparecem distribuídos de maneira uniforme. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O conjunto F de números de vírgula flutuante é limitado, finito e discreto. Os números de F não se encontram uniformemente distribuídos, existindo, no entanto, diferentes zonas onde eles aparecem distribuídos de maneira uniforme. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante O conjunto F de números de vírgula flutuante é limitado, finito e discreto. Os números de F não se encontram uniformemente distribuídos, existindo, no entanto, diferentes zonas onde eles aparecem distribuídos de maneira uniforme. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante A quantidade constante de números de vírgula flutuante pertencentes a cada uma dessas zonas, definidas pelas potências sucessivas da base, corresponde ao número de distintas mantissas positivas. Portanto, em F (β, p, emin , emax ), a quantidade de números de máquina entre potências sucessivas da base é dada por: c = (β − 1)β p−1 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante A quantidade constante de números de vírgula flutuante pertencentes a cada uma dessas zonas, definidas pelas potências sucessivas da base, corresponde ao número de distintas mantissas positivas. Portanto, em F (β, p, emin , emax ), a quantidade de números de máquina entre potências sucessivas da base é dada por: c = (β − 1)β p−1 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Denomina-se região de underflow a região entre o menor número de vírgula flutuante positivo e o zero e, simetricamente, entre o maior número negativo e o zero. Região de underflow: (−b, 0) S (0, b) As regiões situadas além do maior e aquém do menor dos números de vírgula flutuante constituem a região de overflow. Região de overflow: (−∞, −B) Análise e Computação Numérica S (B, ∞) Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Denomina-se região de underflow a região entre o menor número de vírgula flutuante positivo e o zero e, simetricamente, entre o maior número negativo e o zero. Região de underflow: (−b, 0) S (0, b) As regiões situadas além do maior e aquém do menor dos números de vírgula flutuante constituem a região de overflow. Região de overflow: (−∞, −B) Análise e Computação Numérica S (B, ∞) Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Denomina-se região de underflow a região entre o menor número de vírgula flutuante positivo e o zero e, simetricamente, entre o maior número negativo e o zero. Região de underflow: (−b, 0) S (0, b) As regiões situadas além do maior e aquém do menor dos números de vírgula flutuante constituem a região de overflow. Região de overflow: (−∞, −B) Análise e Computação Numérica S (B, ∞) Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Denomina-se região de underflow a região entre o menor número de vírgula flutuante positivo e o zero e, simetricamente, entre o maior número negativo e o zero. Região de underflow: (−b, 0) S (0, b) As regiões situadas além do maior e aquém do menor dos números de vírgula flutuante constituem a região de overflow. Região de overflow: (−∞, −B) Análise e Computação Numérica S (B, ∞) Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Uma representação simplificada de um sistema de vírgula flutuante F na recta real, destacando as regiões de underflow e de overflow, é apresentada a seguir. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Uma representação simplificada de um sistema de vírgula flutuante F na recta real, destacando as regiões de underflow e de overflow, é apresentada a seguir. Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Como a base do sistema de numeração de vírgula flutuante é 2 e a precisão 3, as mantissas possíveis são 0,100, 0,101, 0,110 e 0,111. Os expoentes da base são −1, 0, 1 e 2. A cardinalidade de F é 33. O maior número pertencente a F é (0,111 × 22 )2 . O menor número de vírgula flutuante positivo é (0,100 × 2−1 )2 = (0,25)10 . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante Os valores decimais correspondentes aos números de vírgula flutuante positivos aparecem no corpo do quadro a seguir. e 0,100 −1 0 1 2 1/4 1/2 1 2 m 0,101 0,110 0,111 5/16 5/8 5/4 5/2 3/8 3/4 3/2 3 7/16 7/8 7/4 7/2 (0,100×2−1 )2 = (0,01)2 = 0·20 +0·2−1 +1·2−2 = .. . 1 4 (0,111 × 22 )2 = (11,1)2 = 1 · 21 + 1 · 20 + 1 · 2−1 = Análise e Computação Numérica Sistemas de Vírgula Flutuante = (0,25)10 7 2 = (3,5)10 Sistemas de numeração de vírgula flutuante A região de underflow na base 2 é (−0,100 × 2−1 , 0,000 × 2−1 ) (0,000 × 2−1 , 0,100 × 2−1 ), S que, na base 10, corresponde a (− 14 , 0) S (0, 41 ). Na base 2, a região de overflow é (−∞, −0,111 × 22 ) S (0,111 × 22 , ∞), que corresponde, na base 10, a (−∞, − 27 ) Análise e Computação Numérica S ( 72 , ∞). Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante A região de underflow na base 2 é (−0,100 × 2−1 , 0,000 × 2−1 ) (0,000 × 2−1 , 0,100 × 2−1 ), S que, na base 10, corresponde a (− 14 , 0) S (0, 41 ). Na base 2, a região de overflow é (−∞, −0,111 × 22 ) S (0,111 × 22 , ∞), que corresponde, na base 10, a (−∞, − 27 ) Análise e Computação Numérica S ( 72 , ∞). Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante A região de underflow na base 2 é (−0,100 × 2−1 , 0,000 × 2−1 ) (0,000 × 2−1 , 0,100 × 2−1 ), S que, na base 10, corresponde a (− 14 , 0) S (0, 41 ). Na base 2, a região de overflow é (−∞, −0,111 × 22 ) S (0,111 × 22 , ∞), que corresponde, na base 10, a (−∞, − 27 ) Análise e Computação Numérica S ( 72 , ∞). Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante A região de underflow na base 2 é (−0,100 × 2−1 , 0,000 × 2−1 ) (0,000 × 2−1 , 0,100 × 2−1 ), S que, na base 10, corresponde a (− 14 , 0) S (0, 41 ). Na base 2, a região de overflow é (−∞, −0,111 × 22 ) S (0,111 × 22 , ∞), que corresponde, na base 10, a (−∞, − 27 ) Análise e Computação Numérica S ( 72 , ∞). Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante As leis que valem para a aritmética em R não são válidas num sistema de vírgula flutuante F . Assim, sendo x ~ y , ~ ∈ {+, −, ·, /}, uma operação aritmética em F , verifica-se que: x x x x ⊕y y y y 6= 6= 6 = 6 = x +y x −y x ·y x/y Como consequência, algumas das propriedades básicas de R, como a associatividade e a distributividade, em geral não se verificam em F . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante As leis que valem para a aritmética em R não são válidas num sistema de vírgula flutuante F . Assim, sendo x ~ y , ~ ∈ {+, −, ·, /}, uma operação aritmética em F , verifica-se que: x x x x ⊕y y y y 6= 6= 6 = 6 = x +y x −y x ·y x/y Como consequência, algumas das propriedades básicas de R, como a associatividade e a distributividade, em geral não se verificam em F . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante As leis que valem para a aritmética em R não são válidas num sistema de vírgula flutuante F . Assim, sendo x ~ y , ~ ∈ {+, −, ·, /}, uma operação aritmética em F , verifica-se que: x x x x ⊕y y y y 6= 6= 6 = 6 = x +y x −y x ·y x/y Como consequência, algumas das propriedades básicas de R, como a associatividade e a distributividade, em geral não se verificam em F . Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Se x = 58 , y = 3 8 e z = 34 , então: (x ⊕ y ) ⊕ z = (0,101 · 20 ) ⊕ (0,110 · 2−1 ) ⊕ (0,110 · 20 ) = (0,101 ⊕ 0,011) ⊕ 0,110 = (1,11)2 x ⊕ (y ⊕ z) = 0,101 ⊕ (0,011 ⊕ 0,110) = 0,101 ⊕ 1,001 / = 0,101 ⊕ 1,00 = 1,101 / = (1,10)2 Logo, (x ⊕ y ) ⊕ z 6= x ⊕ (y ⊕ z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Se x = 58 , y = 3 8 e z = 34 , então: (x ⊕ y ) ⊕ z = (0,101 · 20 ) ⊕ (0,110 · 2−1 ) ⊕ (0,110 · 20 ) = (0,101 ⊕ 0,011) ⊕ 0,110 = (1,11)2 x ⊕ (y ⊕ z) = 0,101 ⊕ (0,011 ⊕ 0,110) = 0,101 ⊕ 1,001 / = 0,101 ⊕ 1,00 = 1,101 / = (1,10)2 Logo, (x ⊕ y ) ⊕ z 6= x ⊕ (y ⊕ z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Se x = 58 , y = 3 8 e z = 34 , então: (x ⊕ y ) ⊕ z = (0,101 · 20 ) ⊕ (0,110 · 2−1 ) ⊕ (0,110 · 20 ) = (0,101 ⊕ 0,011) ⊕ 0,110 = (1,11)2 x ⊕ (y ⊕ z) = 0,101 ⊕ (0,011 ⊕ 0,110) = 0,101 ⊕ 1,001 / = 0,101 ⊕ 1,00 = 1,101 / = (1,10)2 Logo, (x ⊕ y ) ⊕ z 6= x ⊕ (y ⊕ z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Se x = 58 , y = 3 8 e z = 34 , então: (x ⊕ y ) ⊕ z = (0,101 · 20 ) ⊕ (0,110 · 2−1 ) ⊕ (0,110 · 20 ) = (0,101 ⊕ 0,011) ⊕ 0,110 = (1,11)2 x ⊕ (y ⊕ z) = 0,101 ⊕ (0,011 ⊕ 0,110) = 0,101 ⊕ 1,001 / = 0,101 ⊕ 1,00 = 1,101 / = (1,10)2 Logo, (x ⊕ y ) ⊕ z 6= x ⊕ (y ⊕ z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Exemplo. Seja F = F (2, 3, −1, 2). Se x = 58 , y = 3 8 e z = 34 , então: (x ⊕ y ) ⊕ z = (0,101 · 20 ) ⊕ (0,110 · 2−1 ) ⊕ (0,110 · 20 ) = (0,101 ⊕ 0,011) ⊕ 0,110 = (1,11)2 x ⊕ (y ⊕ z) = 0,101 ⊕ (0,011 ⊕ 0,110) = 0,101 ⊕ 1,001 / = 0,101 ⊕ 1,00 = 1,101 / = (1,10)2 Logo, (x ⊕ y ) ⊕ z 6= x ⊕ (y ⊕ z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Se x = 78 , y = 5 4 e z = 38 , tem-se: x (y ⊕ z) = (0,111 · 20 ) (0,101 · 21 ) ⊕ (0,110 · 2−1 ) = 0,111 (1,01 ⊕ 0,011) = 0,111 1,101 / = 0,111 1,10 = 1,010 /1 / = (1,01)2 (x y ) ⊕ (x z) = (0,111 1,01) ⊕ (0,111 0,011) = 1,000 /1 /1 / ⊕ 0,01010 /1 / = 1,00 ⊕ 0,0101 = 1,010 /1 / = (1,10)2 Logo, x (y ⊕ z) 6= (x y ) ⊕ (x z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Se x = 78 , y = 5 4 e z = 38 , tem-se: x (y ⊕ z) = (0,111 · 20 ) (0,101 · 21 ) ⊕ (0,110 · 2−1 ) = 0,111 (1,01 ⊕ 0,011) = 0,111 1,101 / = 0,111 1,10 = 1,010 /1 / = (1,01)2 (x y ) ⊕ (x z) = (0,111 1,01) ⊕ (0,111 0,011) = 1,000 /1 /1 / ⊕ 0,01010 /1 / = 1,00 ⊕ 0,0101 = 1,010 /1 / = (1,10)2 Logo, x (y ⊕ z) 6= (x y ) ⊕ (x z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Se x = 78 , y = 5 4 e z = 38 , tem-se: x (y ⊕ z) = (0,111 · 20 ) (0,101 · 21 ) ⊕ (0,110 · 2−1 ) = 0,111 (1,01 ⊕ 0,011) = 0,111 1,101 / = 0,111 1,10 = 1,010 /1 / = (1,01)2 (x y ) ⊕ (x z) = (0,111 1,01) ⊕ (0,111 0,011) = 1,000 /1 /1 / ⊕ 0,01010 /1 / = 1,00 ⊕ 0,0101 = 1,010 /1 / = (1,10)2 Logo, x (y ⊕ z) 6= (x y ) ⊕ (x z). Análise e Computação Numérica Sistemas de Vírgula Flutuante Sistemas de numeração de vírgula flutuante Se x = 78 , y = 5 4 e z = 38 , tem-se: x (y ⊕ z) = (0,111 · 20 ) (0,101 · 21 ) ⊕ (0,110 · 2−1 ) = 0,111 (1,01 ⊕ 0,011) = 0,111 1,101 / = 0,111 1,10 = 1,010 /1 / = (1,01)2 (x y ) ⊕ (x z) = (0,111 1,01) ⊕ (0,111 0,011) = 1,000 /1 /1 / ⊕ 0,01010 /1 / = 1,00 ⊕ 0,0101 = 1,010 /1 / = (1,10)2 Logo, x (y ⊕ z) 6= (x y ) ⊕ (x z). Análise e Computação Numérica Sistemas de Vírgula Flutuante