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