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.0000123 ;
0.0000123 ;
Passo 1
O enunciado dá um número e pede a sua representação no formato de ponto flutuante da máquina com as características seguintes:
- base
; - mantissa com
dígitos significativos; - expoente inteiro no intervalo
.
O que se pede explicitamente:
- escrever a representação em ponto flutuante de
usando truncamento (corte) da mantissa; - escrever a representação em ponto flutuante de
usando arredondamento da mantissa.
Informações relevantes extraídas do enunciado:
- a mantissa deve ter exatamente
dígitos significativos; - o formato normalizado exige que o primeiro dígito da mantissa seja não nulo (ou seja, seja um dígito entre
e ); - o expoente resultante tem de ficar dentro de
a .
Passo 2
Relembrando como é o formato de ponto flutuante que vamos usar (explicação didática e passo a passo):
- Um número normalizado em base
com dígitos é escrito como
onde
é um dígito não-nulo (
) e cada
é um dígito decimal (
a
). Aqui a mantissa tem exatamente
dígitos:
.
- Truncamento: mantém-se os primeiros
dígitos da expansão da mantissa e descarta-se o resto (sem aumentar o último dígito). - Arredondamento para o mais próximo (regra usual): observa-se o dígito imediatamente após o
-ésimo. Se esse dígito for , incrementa-se o -ésimo dígito (com propagação de carries, se necessário); se for , mantém-se os dígitos. Se não houver dígitos após o -ésimo (ou todos forem zeros), truncamento e arredondamento resultam no mesmo valor. - Se durante o arredondamento ocorrer um carry que faz
virar , normaliza-se novamente (por exemplo, arredondado pode virar ) — sempre verificar se o novo expoente fica dentro do intervalo permitido .
Passo 3
Converter o número dado para uma forma normalizada antes de aplicar truncamento/arredondamento:
- O número fornecido é
. - Mover a vírgula para obter a forma com um único dígito não nulo antes do ponto decimal:
(Explicação: para passar de
para
foi preciso deslocar a vírgula 5 casas para a direita, daí o expoente
.)
Verificar o expoente:
está dentro do intervalo permitido
, logo não há underflow/exceção por expoente fora do intervalo.
Passo 4
Determinar os
dígitos significativos da mantissa a partir de
:
- A expansão decimais de
tem, explicitamente, os dígitos seguidos de zeros implícitos: . - Para ter exatamente
dígitos, preenche-se com zeros à direita até completar 4 dígitos: a mantissa com 4 dígitos fica (isto é, ). - Não há dígitos não-zero além do quarto: todos os dígitos seguintes são zeros. Portanto truncamento e arredondamento terão o mesmo efeito (pois não existe dígito >=5 depois do quarto para forçar incremento).
Passo 5
Aplicar truncamento e arredondamento explicitamente:
- Truncamento: pegar os primeiros 4 dígitos da mantissa
→ . Resultado:
- Arredondamento (para o mais próximo): o dígito imediatamente após o quarto é
(menor que ), logo não há incremento. Resultado:
Também é útil apresentar a máquina-estrutura: sinal
, mantissa
, expoente
.
Resposta
Truncamento:
Arredondamento: