Defina uma aplicação de ponto flutuante e de um exemplo
Soluções para a tarefa
Ao falar em números reais a visualização vinda à cabeça é:
No entanto, essa representação custa caro, em termos de processamento e armazenamento ao computador havendo a necessidade de utilizar uma outra maneira que favoreça tais tarefas. Para trabalhar com a parte fracionária de forma satisfatória, usa-se a representação por pontos flutuantes.
Essa representação baseia-se no deslocamento da virgula de forma que se obtenha um número menor ou próximo de 1. Esse deslocamento é feito por meio de notação científica. Esclarecendo: o número 25,456 em notação corresponde ao 0,25456 x 102.
O exemplo acima tinha como base a decimal, no entanto o computador trabalha com a base 2 (binários – 0 e 1). Então um número binário 11,011 em notação corresponde ao 0,11011 x 22. Esse processo de transcrever um número em notação científica recebe o nome de normalização, portanto 0,11011 x 22 está normalizado.
De forma geral, representa-se um ponto flutuante da seguinte forma:
+- M X B+-eOnde:
M é a mantissa (parte fracionária)B é a basee é o expoenteEsquematicamente tem-se [2]:
Desta forma é possível cobrir um largo espectro de números, maximizando o número de bits significativos e consequentemente a precisão da aproximação. Esta forma de representação foi criada por Konrad Zuse para os seus computadores Z1 e Z3.
O número de bits alocados para representar a mantissa e o expoente depende da norma utilizada.
Para obter o número em ponto flutuante converte-se o número para a base na qual será armazenado, normaliza-o e por fim separa-se mantissa, expoente e sinais.
Exemplo[3]:
Assumindo:
1 bit para o sinal do número1 bit para o sinal do expoente4 bits para o expoente10 bits para a mantissaRepresente o número 5,7510 em ponto flutuante. O número em questão encontra-se na base 10, portanto é preciso convertê-lo para binário (base 2), base entendida pelo computador. 5,7510 => 101,112
Normalizando tem-se: 0,10111 x 23
Separando sinais, mantissa e expoente tem-se:
Sinal do número: (+) 0Sinal do expoente: (+) 0Expoente: 011 (3)Mantissa: 10111Portanto tem-se: 00001100000101112
A maioria dos sistemas que operam com ponto flutuante utilizam representações definidas na norma IEEE 754.
O padrão IEEE para aritmética de ponto flutuante (IEEE 754) é o padrão mais amplamente utilizado para o cálculo de ponto flutuante, e é seguido por muitos CPU e melhorias FPU. A norma define formatos para representar números de ponto flutuante (incluindo zero) e os valores não normalizados, bem como os valores especiais infinito e NaN, com um conjunto de operações de ponto flutuante que trabalham com esses valores. Também especifica quatro modos de arredondamento e cinco exceções (inclusive quando essas exceções ocorrem é o que acontece nesses momentos). A Norma IEEE 754-2008 define os formatos adequados para representar números em ponto flutuante de precisão simples (32 bits) e de precisão dupla (64 bits). O título completo da norma é o padrão IEEE para Aritmética Binária de Ponto Flutuante (ANSI / IEEE Std 754-1985), e também é conhecido pelo IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (originalmente o número de referência era IEC 559:1989).[4][5]
O formato de ponto flutuante de precisão simples (32 bits) consiste num bit de sinal (s), 8 bits de expoente (e) e uma mantissa de 23 bits (m). O bit de sinal (s) é 0 (zero) para números positivos e 1 para números negativos. O campo de expoente (e) corresponde à soma de 127 com o expoente de base 2 do número representado. O campo de mantissa (m) corresponde à parte fracionária da mantissa do número representado. Considera-se sempre a mantissa normalizada entre 1 e 2. Desta forma a sua parte inteira é sempre apenas um bit igual a 1 (um) que não é necessário representar.
v = S × M × 2E
Onde:
S = 1 − 2 × s
M = 1.m = 1 + m × 2−23
E = e − 127
Nossa deu muito trabalho digitar tudo isso!