Considere a representação de ponto flutuante F(2,3,1,2).
(a) escreva todos os números representáveis e converta-os para base 10.
(b) os números x1=0.38, x2=5.3 e x3=0.15 são representáveis?

Passo 1

O enunciado pede para manipular float no formato F(beta=2, t=3, L=1, U=2). Vamos precisar da definição de números normalizados em base 2 com mantissa de 3 bits (1 bit antes do ponto e 2 depois) e expoente e variando de 1 a 2.

Passo 2

Em ponto flutuante normalizado cada número (exceto zero) é da forma
pm(1b1b2)2 times 2^e,
onde b1,b2in0,1 e ein1,2. Há 4 escolhas de mantissa e 2 de expoente.

Passo 3

Calculamos os valores positivos para e=1:
1.002 = 1Rightarrow 1times2^1 = 2, 1.012 = 1 + 2^-2 = 1.25Rightarrow 1.25times2 = 2.5, 1.102 = 1.5Rightarrow 1.5times2 = 3, 1.112 = 1.75Rightarrow 1.75times2 = 3.5

Passo 4

Calculamos os valores positivos para e=2:
1.002 = 1Rightarrow 1times2^2 = 4, 1.012 = 1.25Rightarrow 1.25times4 = 5, 1.102 = 1.5Rightarrow 1.5times4 = 6, 1.112 = 1.75Rightarrow 1.75times4 = 7

Passo 5

Incluímos também os sinais negativos e o zero. Assim, todos os números representáveis são
0, pm2, pm2.5, pm3, pm3.5, pm4, pm5, pm6, pm7

Passo 6

Para (b), basta comparar cada xi com o conjunto acima. Como o menor valor positivo normalizado é 2, nenhum valor menor que 2 (como 0.38 e 0.15) é representável; e 5.3 não aparece na lista de passos anteriores, logo também não é representável.

Resposta

(a) Os números representáveis são 0, ±2, ±2.5, ±3, ±3.5, ±4, ±5, ±6 e ±7. (b) Nenhum dos valores 0.38, 5.3 e 0.15 é representável.

Exercícios relacionados