Considere uma máquina que representa números no formato de ponto flutuante, com as seguintes características: base
, mantissa com
dígitos significativos, e expoente com valores inteiros no intervalo
. Escreva a representação em ponto flutuante de cada um dos itens abaixo, no referido sistema, tanto para o truncamento quanto para o arredondamento.
0.99999;
0.99999;
Passo 1
Vou listar claramente o que o enunciado dá e o que pede.
- Dados do sistema de ponto flutuante:
- base
, - mantissa com
dígitos significativos, - expoente inteiro no intervalo
.
- base
- Número a representar:
. - O enunciado pede: a representação em ponto flutuante de
neste sistema, para os dois modos: - truncamento (cortar dígitos extras),
- arredondamento (ao mais próximo, com regra usual de arredondar para cima quando o dígito seguinte
).
Passo 2
Explicar como é o formato normalizado que vamos usar (isso é importante para saber o que é permitido como mantissa/expoente).
- Um número normalizado em base
com dígitos tem a forma
onde
é um dígito não nulo (
) e cada
é um dígito na base
. Aqui a mantissa tem exatamente
dígitos significativos: o dígito
mais os
dígitos seguintes.
- Se, ao aproximar, o arredondamento produz um valor com mantissa igual a
(por exemplo em base ), deve-se renormalizar: transformar em . - O expoente resultante deve ficar dentro do intervalo permitido; se ficar fora, haveria underflow/overflow (não é o caso aqui, como veremos).
Passo 3
Passo inicial concreto: escrever
em notação normalizada (científica) na base
.
- Multiplicando por
para obter o primeiro dígito não nulo:
- Observe os dígitos significativos completos do número: escritos em ordem são
. Ao normalizar obtemos a mantissa , que tem dígitos significativos. Mas nosso sistema aceita apenas dígitos. Portanto precisamos aproximar/recortar a mantissa para ficar com dígitos significativos.
Passo 4
Truncamento (cortar os dígitos extras sem arredondar).
- Regra do truncamento: manter os primeiros
dígitos significativos e eliminar os restantes. - Aqui, os primeiros
dígitos significativos são , o que corresponde à mantissa . - Assim a representação por truncamento é
- Convertendo para forma decimal conveniente:
- Verificação do expoente:
está dentro de , portanto válido.
Passo 5
Arredondamento (ao mais próximo) — tratar o dígito que foi descartado e o possível carry.
- Regra do arredondamento ao mais próximo: olhar o primeiro dígito descartado; se ele for
incrementar a última casa mantida, com propagação de carry se necessário. - Aqui, a sequência completa é
. Mantemos os primeiros dígitos (mantissa provisória ); o dígito seguinte (o quinto) é , que é . Logo devemos arredondar para cima. - Incrementar a última casa de
equivale a fazer
- Isso produz uma mantissa
que não está normalizada (o dígito inicial deve ser entre e ). Fazemos a renormalização deslocando o ponto e aumentando o expoente em :
- Portanto a representação por arredondamento é
- Em decimal isso é simplesmente
(ou ). - Verificação do expoente:
está dentro de , portanto válido.
Passo 6
Resumo numérico e observações finais (breve checagem intuitiva).
- Pelo truncamento obtemos
, que é um pouco menor que o valor exato . - Pelo arredondamento obtivemos
, que é maior que — isso acontece porque todos os dígitos eram e o arredondamento provoca carry que eleva o número para o próximo valor representável, no caso . - Ambos os resultados cabem no intervalo de expoentes permitido, então são representações válidas no sistema pedido.
Resposta
Truncamento:
Arredondamento:
Arredondamento: