números de vírgula flutuante
por que os números de vírgula flutuante são necessários
Uma vez que a memória do computador é limitada, não poderá armazenar números com precisão infinita, independentemente de usar fracções binárias ou decimais: em algum ponto terá de cortar. Mas quanta precisão é necessária? E onde é necessário? Quantos dígitos inteiros e quantos dígitos fraccionários?para um engenheiro que constrói uma auto-estrada, não importa se são 10 ou 10 metros.0001 metros de largura-suas medições provavelmente não são tão precisas em primeiro lugar.
para satisfazer o engenheiro e o designer de chip, um formato de número tem que fornecer precisão para números em magnitudes muito diferentes. No entanto, é necessária apenas precisão relativa. Para satisfazer o físico, deve ser possível fazer cálculos que envolvam números com diferentes magnitudes.
basicamente, ter um número fixo de dígitos inteiros e fraccionais não é útil – e a solução é um formato com um ponto flutuante.
How floating-point numbers work
The idea is to compose a number of two main parts:
- a significand that contains the number’s digits. Os significados negativos representam números negativos.
- um expoente que diz onde o ponto decimal (ou binário) é colocado em relação ao início do significado. Expoentes negativos representam números que são muito pequenos (ou seja, perto de zero).
Como um formato satisfaz a todos os requisitos:
- pode representar números muito diferentes magnitudes (limitado pelo comprimento do expoente)
- fornece a mesma precis ao relativa em todas as magnitudes (limitado pelo comprimento do significand)
- permite cálculos em magnitudes: a multiplicação de um número muito grande e muito pequeno preserva a precisão de ambos no resultado.
números decimais de vírgula flutuante normalmente assumem a forma de notação científica com um ponto explícito sempre entre os 1.º e 2. º dígitos. O expoente é escrito explicitamente incluindo a base, ou um e é usado para separá-lo do significado.
a norma
quase todas as linguagens de hardware e programação usam números de vírgula flutuante nos mesmos formatos binários, que são definidos na norma IEEE 754. Os formatos usuais são 32 ou 64 bits no comprimento total:
Format | Total bits | Significand bits | Exponent bits | Smallest number | Largest number |
---|---|---|---|---|---|
Single precision | 32 | 23 + 1 sign | 8 | ca. 1.2 ⋅ 10-38 | ca. 3.4 ⋅ 1038 |
Double precision | 64 | 52 + 1 sign | 11 | ca. 2.2 ⋅ 10-308 | ca. 1.8 ⋅ 10308 |
Note que existem algumas peculiaridades:
- a sequência de bits real é o sinal bit primeiro, seguido pelo expoente e, finalmente, os significand bits.
- o expoente não tem um sinal; em vez disso, um viés expoente é subtraído dele (127 para simples e 1023 para precisão dupla). Isto, e a sequência de bits, permite que números de ponto flutuante sejam comparados e ordenados corretamente, mesmo quando interpretando-os como inteiros.
- o dígito mais significativo do significand é omitido e assume-se que seja 1, exceto para números subnormais que são marcados por um expoente all-0 e permitem uma gama de números além dos menores números indicados na tabela acima, ao custo de precisão.
- existem valores separados positivos e negativos zero, diferindo no bit do sinal, onde todos os outros bits são 0. Estes devem ser considerados iguais, mesmo que seus padrões de bits são diferentes.
- Existem valores infinitos especiais positivos e negativos, onde o expoente é todos 1-bits e o significado é todos 0-bits. Estes são os resultados dos cálculos em que o intervalo positivo do expoente é excedido, ou a divisão de um número regular por zero.
- existem valores especiais não um número (ou NaN) onde o expoente é todos 1-bits e o significado não é todos 0-bits. Estes representam o resultado de vários cálculos indefinidos (como a multiplicação de 0 e infinito, qualquer cálculo envolvendo um valor NaN, ou casos específicos de Aplicação). Mesmo valores Nan bit-idênticos não devem ser considerados iguais.
Se isto parecer demasiado abstracto e quiser ver como alguns valores específicos se parecem no IEE 754, tente o brinquedo flutuante, ou a visualização do IEEE 754, ou o flutuador exposto.
Leave a Reply