Sistemas de Computação Prof. MSc. Leandro Galvão [email protected]www.dcc.ufam.edu.br/ ~dcc_oc.html Aritmética Computaciona Aritmética Computaciona - Ponto Flutuante – Ponto Flutuante – Material originalmente elaborados pelo Prof. Dr. David Fernandes [email protected]Compilado a partir de slides preparados po Compilado a partir de slides preparados por
26
Embed
Sistemas de Computação Prof. MSc. Leandro Galvão [email protected] dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
A parte A parte fracionáriafracionária (entre 0 e 1) de um (entre 0 e 1) de um número real em notação binária é número real em notação binária é representada por:representada por:
Portanto, seu valor em decimal (Portanto, seu valor em decimal (FF) é dado ) é dado por:por:
A expressão anterior pode ser reescrita A expressão anterior pode ser reescrita como:como:
A expressão anterior sugere uma técnica de A expressão anterior sugere uma técnica de conversão. se multiplicarmos conversão. se multiplicarmos FF por por 22, teremos:, teremos:
Da expressão acima, percebe-se que Da expressão acima, percebe-se que bb-1-1 é a parte é a parte inteira do número inteira do número (2 × F)(2 × F)..
Portanto, podemos afirmar que Portanto, podemos afirmar que (2 × F) = b(2 × F) = b-1-1 + F + F11, , onde onde 0 < F0 < F11 < 1 < 1, e:, e:
Para encontrar Para encontrar bb-2-2, basta repetir o processo., basta repetir o processo.
Assim, o processo de conversão da fração Assim, o processo de conversão da fração FF de decimal de decimal para binário envolve para binário envolve repetidas multiplicações por 2repetidas multiplicações por 2. A cada . A cada passo, a parte fracionária do resultado do passo anterior é passo, a parte fracionária do resultado do passo anterior é multiplicada por 2.multiplicada por 2.
Os dígitos da parte inteira serão Os dígitos da parte inteira serão 00 ou ou 11 (da definição de (da definição de bbii), ), contribuindo para a formação da representação binária.contribuindo para a formação da representação binária.
O processo anterior não é necessariamente O processo anterior não é necessariamente exato:exato:
Uma Uma fração decimalfração decimal com número com número finitofinito de dígitos de dígitos pode corresponder a uma pode corresponder a uma fração bináriafração binária com um com um número número infinitoinfinito de dígitos. de dígitos.
Nesses casos, o algoritmo de conversão é Nesses casos, o algoritmo de conversão é suspenso após um número pré-estabelecido de suspenso após um número pré-estabelecido de passos, dependendo da passos, dependendo da precisão desejadaprecisão desejada..
Escolha da notação Escolha da notação Escolha da notação Escolha da notação
Com a notação de complemento de 2, podemos Com a notação de complemento de 2, podemos representar a parte inteira de números reais.representar a parte inteira de números reais.
Com a notação fracionária, podemos representar Com a notação fracionária, podemos representar a parte fracionária do mesmo número real.a parte fracionária do mesmo número real.
Limitações:Limitações:
números números muito grandesmuito grandes não podem ser representados não podem ser representados
números números muito pequenosmuito pequenos não podem ser representados não podem ser representados
dificuldades para dificuldades para manter precisão manter precisão durante realização de durante realização de operações aritméticasoperações aritméticas
O formato de precisão simples (O formato de precisão simples (floatfloat) ocupa ) ocupa 32 32 bitsbits..
O formato de precisão dupla (O formato de precisão dupla (doubledouble) ocupa ) ocupa 64 64 bitsbits..
23 bits8 bits1 bit
fraçãoexpoentesinal
52 bits11 bits1 bit
fraçãoexpoentesinal
O bit mais à esquerda guarda o sinal do O bit mais à esquerda guarda o sinal do número:número: bit = 0 bit = 0 número positivo número positivo bit = 1bit = 1 número negativo número negativo
Ponto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: FraçãoPonto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: Fração
A A mantissa mantissa é representada na forma é representada na forma normalizada (base binária):normalizada (base binária):
A A mantissamantissa é composta por: é composta por: Algarismo 1Algarismo 1 Ponto de separaçãoPonto de separação FraçãoFração
321.1 bbb
O algarismo 1 e o ponto de numeração O algarismo 1 e o ponto de numeração não não precisam ser armazenadosprecisam ser armazenados, pois são os mesmos , pois são os mesmos para todos os números reais representados.para todos os números reais representados.
Caso a fração possua menos bits que o esperado, Caso a fração possua menos bits que o esperado, zeros devem ser colocados zeros devem ser colocados à direitaà direita, pois não , pois não têm significância.têm significância.
Por razões históricas, o co-processador de ponto Por razões históricas, o co-processador de ponto flutuante Intel flutuante Intel não utiliza parte inteira implícitanão utiliza parte inteira implícita, , ou seja, a parte inteira também é representada ou seja, a parte inteira também é representada juntamente com a fração.juntamente com a fração.
O formato de precisão O formato de precisão estendidaestendida ocupa ocupa 80 bits80 bits..
Ponto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representadosPonto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representados
0 00000000
0000000000000000000000fraçãoexpoentesinal
1 00000000
0000000000000000000000fraçãoexpoentesinal
+ 0+ 0
– – 00
Ponto flutuantePonto flutuante:: Zero:: ZeroPonto flutuantePonto flutuante:: Zero:: Zero
Como representar o Como representar o zerozero em ponto em ponto flutuante?flutuante? Adota-se uma convenção.Adota-se uma convenção.
0 11111111
0000000000000000000000fraçãoexpoentesinal +∞
1 11111111
0000000000000000000000fraçãoexpoentesinal -∞
Ponto flutuantePonto flutuante:: Infinito:: InfinitoPonto flutuantePonto flutuante:: Infinito:: Infinito
Notação especial para representar Notação especial para representar eventos incomunseventos incomuns:: permite que os programas possam manipulá-permite que os programas possam manipulá-
los sem que sejam interrompidos.los sem que sejam interrompidos.
x 11111111
xxx...xx ≠ 0fraçãoexpoentesinal
Ponto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a NumberPonto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a Number
É uma representação do resultado de É uma representação do resultado de operações inválidas, tais como:operações inválidas, tais como: 0/00/0 ∞ ∞ - ∞- ∞ ∞∞/∞/∞ 0 0 × ∞× ∞ √√x, x < 0x, x < 0
ASCII ASCII AAmerican merican SStandard tandard CCode for ode for IInformation nformation
IInterchangenterchange A primeira versão foi criada em 1963 para A primeira versão foi criada em 1963 para
normalizar a transmissão e armazenamento de normalizar a transmissão e armazenamento de texto. texto.
Em 1967 foram incluídas as letras minúsculas Em 1967 foram incluídas as letras minúsculas no código, que essencialmente permaneceu no código, que essencialmente permaneceu inalterado até nossos dias.inalterado até nossos dias.
O código ASCII possui a grande O código ASCII possui a grande desvantagemdesvantagem de apenas permitir a de apenas permitir a representação de 2representação de 288=256 símbolos =256 símbolos diferentes.diferentes.
O código UNICODE pretende normalizar a O código UNICODE pretende normalizar a codificação dos caracteres utilizados em codificação dos caracteres utilizados em todas as escritas do mundo. todas as escritas do mundo.
Utiliza 16 bits para codificar cada caracter Utiliza 16 bits para codificar cada caracter e encontra-se disponível nos sistemas e encontra-se disponível nos sistemas informáticos mais recentes.informáticos mais recentes.
Mais informações em Mais informações em http://www.unicode.org
Para saber mais...Para saber mais...Para saber mais...Para saber mais...
William Stallings. William Stallings. Computer Organization and Computer Organization and Architecture: Designing for PerformanceArchitecture: Designing for Performance. 7th Ed. . 7th Ed. Prentice Hall, 2005. Prentice Hall, 2005. Cap. 09Cap. 09..
Patterson & Hennessy. Patterson & Hennessy. Organização e Projeto de Organização e Projeto de Computadores (Interface HW/SW)Computadores (Interface HW/SW). . Cap. 3Cap. 3..
Sivarama P. Dandamudi. Sivarama P. Dandamudi. Guide to Assembly Guide to Assembly Language Programming in LinuxLanguage Programming in Linux. Springer, 2005. . Springer, 2005. Cap. 22Cap. 22..
Kip R. Irvine. Kip R. Irvine. Assembly Language For Intel-Based Assembly Language For Intel-Based ComputersComputers. 5th Edition. Prentice Hall, 2006. . 5th Edition. Prentice Hall, 2006. Cap. Cap. 1717..