Baixe o app para aproveitar ainda mais
Prévia do material em texto
ufca Representac¸a˜o Nume´rica ECI0080/EM0014 Ca´lculo Nume´rico Sistemas de numerac¸a˜o O nu´mero 34 pode ser escrito como: 34 = 3× 101 + 4× 100 = (34)10 = 27 + 7 = 3× 91 + 7× 90 = (37)9 = 32 + 2 = 4× 81 + 2× 80 = (42)8 = 28 + 6 = 4× 71 + 6× 70 = (46)7 = 30 + 4 = 5× 61 + 4× 60 = (54)6 = 25 + 5 + 4 = 1× 52 + 1× 51 + 4× 50 = (114)5 = 32 + 2 = 2× 42 + 0× 41 + 2× 40 = (202)4 = 27 + 6 + 1 = 1× 33 + 0× 32 + 2× 31 + 1× 30 = (1021)3 = 32 + 2 = 1× 25 + 1× 21 = (100010)2 = (1111111111111111111111111111111111)1 Todos sa˜o sistemas de numerac¸a˜o posicionais Sistemas de numerac¸a˜o No caso de nu´meros reais: (5,8125)10 = (101,1101)2 = (5,64)8 = (5,D)16 Sistemas de numerac¸a˜o Os sistemas mais utilizados em computac¸a˜o sa˜o o bina´rio, octal, decimal e hexadecimal Decimal Bina´rio Octal Hexadecimal 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14 21 10101 25 15 Bina´rio para Decimal Basta expandir a representac¸a˜o bina´ria na base decimal e somar as parcelas (1001110)2 → 0× 20 = 0 → 1× 21 = 2 → 1× 22 = 4 → 1× 23 = 8 → 0× 24 = 0 → 0× 25 = 0 → 1× 26 = 64 + (78)10 Decimal para Bina´rio Consideramos as partes inteira e fraciona´ria separadamente Decimal para Bina´rio Consideramos as partes inteira e fraciona´ria separadamente Por exemplo, tomemos o nu´mero (29,8)10 Decimal para Bina´rio Consideramos as partes inteira e fraciona´ria separadamente Por exemplo, tomemos o nu´mero (29,8)10 Para a parte inteira, fazemos (quadro) Decimal para Bina´rio Consideramos as partes inteira e fraciona´ria separadamente Por exemplo, tomemos o nu´mero (29,8)10 Para a parte fraciona´ria, fazemos (quadro) Ponto fixo e ponto flutuante 45,31 = 4,531× 101 = 0,4531× 102 = 453,1× 10−1 110101 = 110,101× 23 = 1,10101× 25 = 0,0110101× 27 Formato de ponto flutuante Um nu´mero real x e´ representado como x = ±m× be m = (d0,d1d2d3 . . . dt−1)b onde: • b ∈ {2, 3, 4, . . . } e´ a base • m e´ a mantissa • e e´ o expoente • t ∈ {1, 2, 3, . . . } e´ o nu´mero de d´ıgitos Formato bina´rio de ponto flutuante Considere o seguinte formato x = ±m× 2e, 1 ≤ m < 2 m = (b0.b1b2b3b4 . . . b15)2 Formato bina´rio de ponto flutuante expoente mantissa sinal Considere o seguinte formato 1 bit 6 bits 16 bits 015162122 x = ±m× 2e, 1 ≤ m < 2 m = (b0.b1b2b3b4 . . . b15)2 Sinal Em todos os formatos bina´rios, 1 bit e´ reservado para o sinal do nu´mero • 0⇒ positivo • 1⇒ negativo Polarizac¸a˜o do expoente Continuando o exemplo anterior com 6 bits para o expoente, podemos representar de 0 a 26 − 1 = 63 (64 valores) Para permitir sinais negativos, realiza-se uma polarizac¸a˜o Neste caso, subtraimos 25 − 1 (o zero transladado) de 0 e 63, obtendo a faixa de expoentes −31 a 32 Portanto, um expoente e sera´ armazenado como e+ 31 expoente mantissa 015162122 Polarizac¸a˜o do expoente e = (1)10 = (1)2 e´ armazenado como (11111)2 + (1)2 = (100000)2 e = (−3)10 = −(11)2 e´ armazenado como (11111)2 − (11)2 = (011100)2 Valores especiais Os expoentes (000000)2 e (111111)2 sa˜o utilizados para representar o zero e o infinito (ou algum erro, NaN) Com isso, • o maior expoente e´ armazenado como (111111)2 − (1)2 = (62)10, ou seja, o maior expoente vale (62)10 − (31)10 = (31)10 • e o menor expoente esta´ associado a (000001)2 = (1)10, ou seja, o menor expoente vale (1)10 − (31)10 = −(30)10 Mantissa A mantissa e´ composta pelos d´ıgitos significantes do nu´mero armazenado Usualmente, ela e´ armazenada normalizada (0,1)10 = (0,00011001100110011 . . . )2 = (1,1001100110011 . . . )2 × 2−4 este bit sera´ impl´ıcito Assim, o expoente e = −(4)10 = −(100)2 sera´ armazenado como (31)10 − (4)10 = (27)10 = (011011)2 Mantissa Neste formato fict´ıcio, o nu´mero (0,1)10 sera´ armazenado como: 0 011011 1001100110011001 Menor nu´mero O menor nu´mero normal positivo que pode ser armazenado e´ (1,0000000000000000)2 × 2−30 ≈ 9.3132257× 10−10 0 000001 0000000000000000 Underflow 0 000000 1000000000000000 0 000000 0000000000000001 Estes nu´meros sera˜o tratados como zero 0 000001 0000000000000000 pois ambos sa˜o menores do que e Underflow 0 000000 1000000000000000 0 000000 0000000000000001 Estes nu´meros sera˜o tratados como zero 0 000001 0000000000000000 pois ambos sa˜o menores do que e Veremos que o uso de “desnormalizac¸a˜o” reduz a zona de underflow Maior nu´mero O maior nu´mero normal positivo sera´ (1,1111111111111111)2 × 231 = (2− 2−16)× 231 = 4294934528 0 111110 1111111111111111 Overflow 1 111110 1111111111111111 0 111110 1111111111111111 menor do que Quando o valor absoluto do valor arredondado e´ grande demais para ser representado, o resultado e´ ±∞ maior do que Zero 0 000000 0000000000000000 Not a Number Resultados inva´lidos sa˜o caracterizados pela sigla “NaN” • 0×∞ • 0/0 • ∞/∞ • ∞−∞ 0 111111 6= 0 Padra˜o IEEE754 O grupo IEEEp754 foi formado na de´cada de 70 para definir um padra˜o para a representac¸a˜o de nu´meros reais, o qual seria adotado pelas indu´strias de computadores Participavam o pro´prio IEEE, Apple, Zilog, DEC, Intel, Hewlett-Packard, Motorola e National Semiconductor Padra˜o IEEE754 O padra˜o IEEE754 estabelece: • formatos bina´rios e decimais para nu´meros em ponto flutuante • operac¸o˜es: adic¸a˜o, subtrac¸a˜o, multiplicac¸a˜o, divisa˜o, raiz quadrada, comparac¸a˜o e outras • conversa˜o entre inteiro e formatos em ponto flutuante • conversa˜o entre formatos diferentes de ponto flutuante • converso˜es entre formatos de ponto flutuante e outras representac¸o˜es (e.g., cadeias de caracteres) • tratamento de excec¸o˜es: NaNs, overflow, underflow, etc. Formatos Determina 5 formatos ba´sicos: • Treˆs formatos bina´rios com 32, 64, e 128 bits cada • Dois formatos decimais com 64 e 128 bits cada Formatos Determina 5 formatos ba´sicos: • Treˆs formatos bina´rios com 32, 64, e 128 bits cada • Dois formatos decimais com 64 e 128 bits cada Usualmente, fabricantes de computadores implementam os formatos bina´rios Formatos Determina 5 formatos ba´sicos: • Treˆs formatos bina´rios com 32, 64, e 128 bits cada • Dois formatos decimais com 64 e 128 bits cada Usualmente, fabricantes de computadores implementam os formatos bina´rios No passado, alguns computadores possuiam unidades de aritme´ticas decimais, mas estas sa˜o mais lentas e maiores, comparadas com unidades bina´rias Atualmente, poucos processadores possuem instruc¸o˜es/hardware para aritme´tica em ponto flutuante decimal (e.g., mainframe IBM z10, 2008) Precisa˜o simples Utiliza 32 bits (4 bytes) expoente mantissa 1 bit 8 bits 23 bits ± Precisa˜o simples Exerc´ıcio. Determine (a) o maior nu´mero positivo normalizado e (b) o menor valor positivo normalizado, ambos em precisa˜o simples Precisa˜o simples Exerc´ıcio. Determine (a) o maior nu´mero positivo normalizado e (b) o menor valor positivo normalizado, ambos em precisa˜o simples (a) O valor pretendido tera´ como mantissa um nu´mero com 24 bits (considerando o bit impl´ıcito) iguais a 1 e como expoente (11111110)2 Precisa˜o simples Exerc´ıcio. Determine (a) o maior nu´mero positivo normalizado e (b) o menor valor positivo normalizado, ambos em precisa˜o simples (a) O valor pretendido tera´ como mantissa um nu´mero com 24 bits (considerando o bit impl´ıcito) iguais a 1 e como expoente (11111110)2 Portanto, o maior valor positivoe´ (1,1111 . . . 11)2×2127 = (2−2−23)×2127 ≈ 2128 ≈ 3,4×1038 Precisa˜o simples Exerc´ıcio. Determine (a) o maior nu´mero positivo normalizado e (b) o menor valor positivo normalizado, ambos em precisa˜o simples (a) O valor pretendido tera´ como mantissa um nu´mero com 24 bits (considerando o bit impl´ıcito) iguais a 1 e como expoente (11111110)2 Portanto, o maior valor positivo e´ (1,1111 . . . 11)2×2127 = (2−2−23)×2127 ≈ 2128 ≈ 3,4×1038 (b) E o menor valor e´ (1,000 . . . 00)2 × 2−126 = 2−126 ≈ 1,2× 10−38 Precisa˜o simples Exerc´ıcio. Represente (−1,375× 255)10 no formato bina´rio IEEE754 de precisa˜o simples Precisa˜o simples Exerc´ıcio. Represente (−1,375× 255)10 no formato bina´rio IEEE754 de precisa˜o simples (−1,375× 255)10 = (−1,375× 2182−127)10 = (−1)1 × (1,011)2 × 210110110−01111111 Precisa˜o simples Exerc´ıcio. Represente (−1,375× 255)10 no formato bina´rio IEEE754 de precisa˜o simples (−1,375× 255)10 = (−1,375× 2182−127)10 = (−1)1 × (1,011)2 × 210110110−01111111 1 10110110 01100000000000000000000 Precisa˜o dupla Sa˜o representados com 64 bits (8 bytes) expoente mantissa 1 bit 11 bits 52 bits ± Precisa˜o dupla Considere o nu´mero 27,56640625 em precisa˜o dupla: 0 10000000011 1011100100010000000000000000000000000000000000000000 O nu´mero anterior a este e´: Ja´ o nu´mero posterior e´: 0 10000000011 1011100100001111111111111111111111111111111111111111 0 10000000011 1011100100010000000000000000000000000000000000000001 Precisa˜o dupla Considere o nu´mero 27,56640625 em precisa˜o dupla: 0 10000000011 1011100100010000000000000000000000000000000000000000 O nu´mero anterior a este e´: Ja´ o nu´mero posterior e´: 0 10000000011 1011100100001111111111111111111111111111111111111111 0 10000000011 1011100100010000000000000000000000000000000000000001 Portanto, o nu´mero 27,56640625 representa na verdade o intervalo: [27,5664062499999982236431605997495353221893310546875, 27,5664062500000017763568394002504646778106689453125) 27,56640625 Desnormalizac¸a˜o Com o intuito de representar nu´meros pro´ximos a zero, o padra˜o IEEE754 define os nu´meros subnormais ou desnormalizados Desnormalizac¸a˜o Com o intuito de representar nu´meros pro´ximos a zero, o padra˜o IEEE754 define os nu´meros subnormais ou desnormalizados Um nu´mero e´ subnormal se ambos o expoente e o bit impl´ıcito valem zero Desnormalizac¸a˜o Considere o formato IEEE de precisa˜o simples Neste, o menor nu´mero positivo e´ 2−126: 0 00000001 00000000000000000000000 Desnormalizac¸a˜o Considere o formato IEEE de precisa˜o simples Neste, o menor nu´mero positivo e´ 2−126: 0 00000001 00000000000000000000000 Observe que podemos escrever 2−127 = 2−1 × 2−126 = (0,1)2 × 2−126, o qual e´ menor do que 2−126, e armazena´-lo como 0 00000000 10000000000000000000000 Desnormalizac¸a˜o Considere o formato IEEE de precisa˜o simples Neste, o menor nu´mero positivo e´ 2−126: 0 00000001 00000000000000000000000 Observe que podemos escrever 2−127 = 2−1 × 2−126 = (0,1)2 × 2−126, o qual e´ menor do que 2−126, e armazena´-lo como 0 00000000 10000000000000000000000 desnormalizac¸a˜o! Desnormalizac¸a˜o Considere o formato IEEE de precisa˜o simples Neste, o menor nu´mero positivo e´ 2−126: 0 00000001 00000000000000000000000 Observe que podemos escrever 2−127 = 2−1 × 2−126 = (0,1)2 × 2−126, o qual e´ menor do que 2−126, e armazena´-lo como 0 00000000 10000000000000000000000 Usando este esquema, o menor positivo armazenado sera´ agora: 0 00000000 00000000000000000000001 o qual representa: 2−126 × 2−23 = 2−149 ≈ 1,401298464× 10−45 Desnormalizac¸a˜o No caso do formato de 64 bits, o menor valor positivo sera´: 2−1022 × 2−52 = 2−1074 ≈ 4,940656458× 10−324 Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 (1,00)2 × 21 = (2,0)10 (1,01)2 × 21 = (2,5)10 (1,10)2 × 21 = (3,0)10 (1,11)2 × 21 = (3,5)10 Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 (1,00)2 × 21 = (2,0)10 (1,01)2 × 21 = (2,5)10 (1,10)2 × 21 = (3,0)10 (1,11)2 × 21 = (3,5)10 e, considerando os nu´meros subnormais, temos tambe´m (0,01)2 × 2−1 = (0,125)10 (0,10)2 × 2−1 = (0,25)10 (0,11)2 × 2−1 = (0,375)10 Formato fict´ıcio Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Sistemas de numeração Sistemas de numeração Sistemas de numeração Binário para Decimal Decimal para Binário Ponto fixo e ponto flutuante Formato de ponto flutuante Formato binário de ponto flutuante Sinal Polarização do expoente Valores especiais Mantissa Mantissa Menor número Underflow Maior número Overflow Zero Not a Number Padrão IEEE754 Formatos Precisão simples Desnormalização Formato fictício
Compartilhar