Considere o sistema de numeração de ponto flutuante normalizado F=F(16,3,13,44)
\square
O maior número positivo em F é
\square
Qual destes números possui representação exata em F ? Para este efeito, desconsidere erros de conversão muito pequenos, que nesse processo acarretariam uma sequencia de zeros ou ( \beta-1 )'s consecutivos mais longa do que as posições remanecentes na mantissa.
3.0752289603697136 \mathrm{e}-08
0.15781497955322266
9.019451852054772 \mathrm{e}-13

Passo 1

O enunciado define o sistema de ponto flutuante normalizado \displaystyle F = F(16,3,-13,44)
onde
  • a base é \beta=16,
  • a precisão (número de dígitos na mantissa) é p=3,
  • o menor expoente é e_{\min}=-13 e o maior é e_{\max}=44.
    Pede-se:
  1. O maior número positivo em F.
  2. Qual dos três valores dados possui representação exata em F.
    Para resolvermos, vamos precisar da fórmula do maior número em ponto flutuante normalizado e lembrar que todo número representável em F é da forma \displaystyle x = \pm(d_0 + d_1\,16^{-1} + d_2\,16^{-2})\,16^e
    com 1\le d_0\le15, 0\le d_1,d_2\le15 e -13\le e\le44.

Passo 2

Em ponto flutuante normalizado, o maior número positivo ocorre quando escolhemos a mantissa máxima
d_0 = 15,\quad d_1=15,\quad d_2=15
e o maior expoente e=44. A mantissa máxima vale
M_{\max} = 15 + \frac{15}{16} + \frac{15}{16^2} = 16 - 16^{-2}.
Portanto, o maior número é
x_{\max} = \bigl(16 - 16^{-2}\bigr)\,16^{44}.

Passo 3

Para verificar se um dado valor decimal possui representação exata em F, precisamos:
– Normalizá-lo em base 16, encontrando um expoente e tal que \,m = x / 16^e\in[1,16).
– Converter m para a forma hexadecimal \,m = d_0.d_1d_2\ldots_{16}.
– Checar se depois de d_0,d_1,d_2 surgem zeros infinitos (ou 15’s infinitos), ou seja, se a expansão pára em no máximo 3 dígitos.

Passo 4

Teste com x_1=3.0752289603697136\times10^{-8}.
– Encontra-se e tal que m=x_1/16^e\in[1,16); obtém-se e=-7 e um m\approx8.26365.
– Converter 8.26365 para hex dá aproximadamente 8.428\ldots_{16}, cuja expansão não pára em 3 dígitos.
Logo, não é exato em F.

Passo 5

Teste com x_2=0.15781497955322266.
– Normalizando em base 16, escolhe-se e=-1 e obtém-se m\approx2.52504.
– A conversão para hex gera 2.86A\ldots_{16}, também não cessando em 3 dígitos.
Portanto, não é exato.

Passo 6

Teste com x_3=9.019451852054772\times10^{-13}.
– Normaliza-se com e=-10 (ou e=-9), obtendo-se m\approx0.99 ou outro valor fora do intervalo correto, e em qualquer caso a expansão não termina em 3 dígitos hex.
Assim, também não é exato.

Resposta

O maior número positivo em F é
\bigl(16 - 16^{-2}\bigr)\,16^{44}.
Nenhum dos três valores fornecidos tem representação exata em F.

Exercícios relacionados