Os números que podem ser representados com exatidão em um computador são denominados números de máquina.
A representação binária de 0.2 é:
Qual é o erro na representação de 0.2 em um computador que utilize o sistema de ponto flutuante
?
A representação binária de 0.2 é:
Passo 1
O enunciado dá:
- A representação binária exata periódica de
é
- O computador usa o sistema de ponto flutuante
.
O que a pergunta pede:
- Qual é o erro na representação de
nesse sistema de ponto flutuante? (ou seja, qual a diferença entre o valor armazenado pelo computador e o valor real ).
Passo 2
Primeiro vamos normalizar a expansão binária dada. A repetição é
. Ao deslocar a vírgula 3 casas para a direita obtemos a forma normalizada:
Portanto o expoente verdadeiro é
e a mantissa (significand) normalizada é
.
Passo 3
Interpretação do formato
:
- base
; - precisão
significa que a mantissa tem dígitos binários no total, ou seja a forma normalizada — o bit implícito 1 mais bits de fração armazenados; - o expoente varia entre
e (o expoente está dentro do intervalo, logo não há under/overflow); - vamos assumir arredondamento para o mais próximo (round-to-nearest), procedimento padrão.
Passo 4
Escrevemos os primeiros bits da mantissa normalizada
. Os bits fracionários repetem o padrão
. Listando os primeiros bits fracionários
:
Como
inclui o
antes da vírgula mais
bits de fração, mantemos
até
e examinamos
para arredondar. Aqui
e há bits não nulos depois dele (a cauda não é zero), portanto pelo arredondamento para o mais próximo devemos arredondar a mantissa para cima (incrementar a ULP).
Passo 5
A mantissa truncada (antes de incrementar) é
Ao arredondar para cima, somamos
no último bit fracionário, obtendo a mantissa armazenada
Escrevendo os
dígitos significativos (bit implícito + 15 bits) como inteiro binário temos
Em hexadecimal isso é
e em decimal
O valor em ponto flutuante armazenado é, com expoente
,
Passo 6
O erro absoluto é
Colocando em denominador comum
obtemos
Logo o erro absoluto é exatamente
Em forma decimal aproximada (usar vírgula como separador):
Se quiser o erro relativo (apenas como informação extra), temos