Um sistema de ponto flutuante pode ser expresso pela função
F=F\left(b, n, e_{1}, e_{2}\right) .
Por exemplo, dado o sistema F(10,3,-4,4), o número x=-279, 15 é representado como x=-0,279 \times 10^{3}. Dados os sistemas de aritmética de ponto flutuante a seguir, represente os números (utilize truncamento), indicando possíveis casos de underflow e overflow.
102983, 65

Passo 1

O enunciado pede: usar o sistema de ponto flutuante F(10,3,-4,4) e representar os números 102983 e 65 usando truncamento, indicando se há underflow ou overflow.
Informações dadas (peguei tudo do enunciado):
  • base b=10;
  • número de dígitos da mantissa n=3;
  • intervalo de expoentes e\in\{-4,\dots,4\} (ou seja, e_{1}=-4 e e_{2}=4);
  • usar truncamento (não arredondamento) ao reduzir a mantissa a 3 dígitos;
  • números a representar: 102983 e 65.

Passo 2

O que significa um número neste sistema e que forma ele deve ter.
  • Um número normalizado em F(10,3,-4,4) tem a forma
\pm 0,d_{1}d_{2}d_{3}\times10^{e},
onde cada d_{i} é um dígito decimal 0,1,\dots,9 e o primeiro dígito da mantissa satisfaz d_{1}\neq0 (ou seja, d_{1}\in\{1,\dots,9\}). Aqui temos exatamente 3 dígitos na mantissa: d_{1}d_{2}d_{3}.
  • O valor numérico dessa representação é
\pm(0,d_{1}d_{2}d_{3})\times10^{e}=\pm (d_{1}d_{2}d_{3})\times10^{e-3}.
  • O menor número positivo normalizado diferente de zero (magnitude mínima) ocorre com d_{1}=1,d_{2}=0,d_{3}=0 e e=e_{1}=-4:
\text{mínimo positivo} = 0,100\times10^{-4}=1,00\times10^{-5}.í
Qualquer número positivo com magnitude menor que 1,00\times10^{-5} fará underflow (será representado por zero no formato normalizado, se não houver subnormais).
  • O maior número representável (em módulo) ocorre com d_{1}=d_{2}=d_{3}=9 e e=e_{2}=4:
\text{máximo} = 0,999\times10^{4}=9990.á
Qualquer número com módulo maior que 9990 provoca overflow (não cabe no intervalo de expoentes).

Passo 3

Como converter um número inteiro positivo para a forma normalizada (procedimento que vou aplicar):
  1. Escrever o número em notação científica com um único algarismo não nulo imediatamente após o ponto decimais no formato 0,d_{1}d_{2}d_{3}\dots\times10^{e}. Ex.: para x escolher e tal que 0<0,d_{1}\le 0,9 e d_{1}\neq0.
  2. Truncar a mantissa aos 3 primeiros dígitos d_{1}d_{2}d_{3} (descartar os dígitos seguintes, sem arredondar).
  3. Verificar se o expoente e obtido está no intervalo permitido [-4,4]. Se e>4 ou e<-4 há overflow ou underflow, respectivamente.
  4. Se e estiver dentro do intervalo, o número truncado é a representação final.
Vou aplicar esse procedimento aos dois números.

Passo 4

Representação de 65.
  1. Colocar em forma normalizada com muitos dígitos para ver onde truncar:
65 = 0,650000\ldots\times10^{2}.
Aqui e=2 e a mantissa iniciando é 0,650\ldots. O primeiro dígito d_{1}=6 é não nulo, então a normalização está correta.
2. Truncamento aos 3 dígitos da mantissa: pegar d_{1}d_{2}d_{3}=650. Não há mais dígitos relevantes (os seguintes são zeros), portanto o truncamento não altera o valor exato.
3. Verificar expoente: e=2 está dentro do intervalo [-4,4].
4. Conclusão: 65 é representável exatamente no formato escolhido como
0,650\times10^{2}.
Não há underflow nem overflow.

Passo 5

Representação de 102983.
  1. Escrever em forma normalizada:
102983 = 0,102983\ldots\times10^{6}.
Aqui o expoente necessário para colocar um dígito não nulo como d_{1} é e=6.
2. Truncamento aos 3 dígitos da mantissa (se tentássemos): a mantissa truncada seria 0,102, dando o valor aproximado
0,102\times10^{6}=102000.
  1. Mas antes mesmo de aceitar essa aproximação temos que checar o intervalo de expoentes permitido: o expoente usado seria e=6, e o máximo permitido é e_{2}=4. Logo e=6>4.
  2. Conclusão: não existe e dentro de [-4,4] que permita representar um número da ordem de 10^{5} ou 10^{6}. Assim 102983 causa overflow no sistema F(10,3,-4,4). Mesmo a aproximação truncada 102000 excederia o máximo representável 9990, portanto não pode ser armazenada como um número finito neste formato.

Passo 6

Resumo intuitivo e checagem numérica rápida:
  • Máximo representável =9990. Como 102983>9990, é overflow.
  • 65 está muito abaixo de 9990 e bem acima do mínimo 1,00\times10^{-5}, então é representável exatamente como 0,650\times10^{2}.

Resposta

Overflow (não representável; excede o máximo 9990)
0,650\times10^{2}

Exercícios relacionados