Explique por que números como 0,1 não podem ser representados exatamente no formato IEEE 754.
Passo 1
Beleza, o enunciado pede pra explicar por que números como 0,1 (decimal) não cabem direitinho no formato IEEE 754. O assunto aqui é representação de ponto flutuante (floating point) em binário, e vamos precisar entender como a mantissa e o expoente funcionam, além de como converter frações decimais em binário.
Passo 2
Antes de mais nada, lembra que no IEEE 754 cada número é guardado como
.
Isso significa que a mantissa é uma sequência finita de bits depois do ponto, e o expoente também tem um tamanho limitado. Então só dá pra guardar um número com precisão limitada em binário.
Isso significa que a mantissa é uma sequência finita de bits depois do ponto, e o expoente também tem um tamanho limitado. Então só dá pra guardar um número com precisão limitada em binário.
Passo 3
Agora, para ver por que 0,1 é chato, basta converter 0,1 (decimal) pra binário. A conversão de frações faz assim: multiplica por 2, pega a parte inteira, repete com a parte fracionária.
- 0,1×2 = 0,2 → bit 0
- 0,2×2 = 0,4 → bit 0
- 0,4×2 = 0,8 → bit 0
- 0,8×2 = 1,6 → bit 1
- 0,6×2 = 1,2 → bit 1
- 0,2×2 = 0,4 → bit 0
…e você vê que a partir de 0,2 volta tudo igual, gerando o ciclo 0011 repetido.
No final, 0,1₁₀ = 0.0001100110011…₂ (os “0011” se repetem para sempre).
Passo 4
Como a mantissa em IEEE 754 tem tamanho fixo (por exemplo 23 bits em single precision ou 52 em double), você não pode guardar essa repetição infinita. Você só armazena os primeiros N bits de 00011001100… e fecha ali. O resto dos “0011” que sobraria é cortado (truncamento) ou causa arredondamento. Resultado: o bit pattern final é uma aproximação.
Passo 5
Ou seja, 0,1 decimal vira algo como
se for single precision, e nunca exatamente 0.00011001100…₂. Isso explica porque, ao fazer operações com 0.1 no computador, você às vezes vê 0.10000000149011612 ou 0.09999999999999998 — é o melhor chute possível com a mantissa limitada.
Resposta
Números como 0,1 não cabem exatamente em IEEE 754 porque sua representação binária é infinita e periódica (0.00011001100…₂), enquanto o formato IEEE 754 usa mantissa de tamanho fixo, obrigando a truncar ou arredondar essa sequência infinita.