Considere o sistema de aritmética de ponto flutuante \mathrm{F}(2,4,-2,3) normalizado:
a) Quantos números podemos representar nesse sistema?
b) Qual o maior número na base 10 que pode ser representado em F?
c) Os seguintes números na base 10 podem ser representados em F por truncamento (pertencem a F ou ocorre underflow ou overflow)? Represente-os nesse sistema e indique underflow ou overflow se for o caso.
d) Arredonde, nesse sistema F, o número (11,11111)_{2}.
i) (0,15625)_{10}
ii) (3,375)_{10}
iii) (8,56)_{10}

Passo 1

O sistema de ponto flutuante \mathrm{F}(2,4,-2,3) é normalizado em base 2 com precisão de 4 dígitos na mantissa e expoentes inteiros e em \{-2,-1,0,1,2,3\}. Cada número não nulo tem a forma
\pm(1.f_{1}f_{2}f_{3})_{2}\times 2^{e},
onde cada f_{i}\in\{0,1\}. Vamos:
a) contar quantos há no total,
b) achar o maior valor,
c) ver se certos decimais cabem por truncamento (ou dão underflow/overflow) e
d) arredondar (11,11111)_{2}.

Passo 2

Conteúdo não nulo:
– sinais: 2 escolhas ( + ou -);
– expoentes: 6 valores ( -2 a 3);
– mantissa: 1 bit implícito mais 3 bits livres \Rightarrow 2^{3}=8 combinações.
Logo há 2\times6\times8=96 números não nulos. Somando o zero, totalizamos
96+1=97
números representáveis.

Passo 3

O maior mantissa é (1.111)_{2}=1+0{,}5+0{,}25+0{,}125=1{,}875 e o maior expoente é e=3.
\max =1{,}875\times 2^{3}=1{,}875\times 8=15.

Passo 4

Vamos truncar cada valor ao formato \pm(1.f_{1}f_{2}f_{3})_{2}\times2^{e} e verificar under/overflow.
i) Para 0,15625: em binário 0,15625=(0.00101)_{2}. Normalizado seria
1.01_{2}\times 2^{-3},
mas -3< -2 \Rightarrow underflow.
ii) Para 3,375: em binário 3,375=(11.011)_{2}. Normalizado:
1.1011_{2}\times2^{1}.
Truncando a mantissa aos 4 dígitos \Rightarrow f_{1}f_{2}f_{3}=101, fica
(1.101)_{2}\times2^{1}.
Nenhum underflow nem overflow.
iii) Para 8,56: a parte inteira é 8=(1000)_{2}, então
8,56\approx(1000.1001\ldots)_{2}\;\Longrightarrow\;1.000\ldots_{2}\times2^{3}.
Truncando \Rightarrow f_{1}f_{2}f_{3}=000, fica
(1.000)_{2}\times2^{3}.
Também sem underflow nem overflow.

Passo 5

Arredondar (11.11111)_{2}. Primeiro normalize:
(11.11111)_{2}=1.111111_{2}\times2^{1}.
Queremos 4 dígitos na mantissa: \;1.f_{1}f_{2}f_{3} com f_{1}f_{2}f_{3}=111. O próximo bit é 1, então arredonda-se ao valor seguinte:
1.111_{2}\xrightarrow{\text{round}}\;10.000_{2},
o que, renormalizando, dá mantissa 1.000 e expoente e=2. Assim o valor arredondado é
(1.000)_{2}\times2^{2}.

Resposta

a) 97 números.
b) 15.
c)
i) underflow;
ii) (1.101)_{2}\times2^{1};
iii) (1.000)_{2}\times2^{3}.
d) (1.000)_{2}\times2^{2}.

Exercícios relacionados