Seja uma máquina fictícia que opera em um sistema de ponto flutuante de base binária e que representa os números usando 32 bits. Seja o seguinte número representado nesta máquina:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
0
0
1
1
1
0
1
1
0
1
1
1
1
0
1
1
Se o primeiro bit indica o sinal do número, o segundo é o sinal do expoente, os próximos seis são o expoente, e os vinte e quatro últimos são a mantissa, responda às seguintes perguntas:
(a) O número está normalizado? Se não, normalize-o.
(b) O número é positivo ou negativo?
(c) Em módulo, o número é menor do que 1 ou maior do que 1 ?
(d) Como ficaria a representação deste número no sistema (i.e., base decimal, 6 dígitos na mantissa, e expoente variando de )?
Passo 1
O enunciado descreve um formato de ponto flutuante binário de bits, com
bit de sinal do número (bit ),
bit de sinal do expoente (bit ),
bits do valor absoluto do expoente (bits –),
bits de mantissa inteira (bits –).
O número armazenado vale
onde é o bit , é o expoente com sinal dado em bit e magnitude em bits –, e é a mantissa em binário com bits. Vamos extrair , e , checar se está normalizado e levar ao formato pedido em (d).
Passo 2
Extração de , e . Da sequência de bits temos:
bit .
bit (expoente não-negativo).
bits –, logo . Como bit , .
bits – ( bits) formam a mantissa inteira em binário. O primeiro desses bits (bit ) é , portanto a mantissa inicia em ···{} e . Em ponto flutuante binário normalizado esperamos a mantissa começando com bit . Concluímos que NÃO está normalizado.
Passo 3
Normalização. A mantissa começa em e o primeiro “” aparece em bit . Para que o bit passe a ser , deslocamos todos os bits da mantissa uma posição à esquerda (multiplicando por ) e reduzimos o expoente em , isto é
O novo campo mantissa (bits –) é o original deslocado à esquerda com um de preenchimento em bit . Em notação de bits (listar apenas os bits):
Passo 4
Resposta (a):
Não, o número não está normalizado. A forma normalizada tem
sinal s=0,
bit de sinal do expoente =0 (expoente positivo),
bits de magnitude do expoente =000101 (que é 5),
mantissa (24 bits) =
1,0,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,0
Passo 5
Resposta (b):
O bit de sinal é 0, logo o número é positivo.
Passo 6
Resposta (c):
O expoente final E'=5 é positivo, portanto lvert xrvert>1.
Passo 7
Resposta (d):
Vamos converter x para decimal. Da mantissa normalizada e E'=5 temos
M = 108088122^23approx1,288414Rightarrow x = Mcdot2^5approx1,288414times32approx41,22925
No sistema F(10,6,-10,10) normalizamos em base 10:
41,22925 = 4,122925times10^1
Com 6 dígitos na mantissa e arredondando o décimo quarto dígito (que é 5) para baixo, temos