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 32 bits, com
  • 1 bit de sinal do número (bit 0),
  • 1 bit de sinal do expoente (bit 1),
  • 6 bits do valor absoluto do expoente (bits 2 7),
  • 24 bits de mantissa inteira (bits 8 31).
    O número armazenado vale
x = (-1)^s;M;2^E,
onde s é o bit 0, E é o expoente com sinal dado em bit 1 e magnitude em bits 2 7, e M é a mantissa em binário com 24 bits. Vamos extrair s, E e M, checar se está normalizado e levar ao formato pedido em (d).

Passo 2

Extração de s, E e M. Da sequência de bits temos:
  • bit 0 = 0Rightarrow s = 0.
  • bit 1 = 0 (expoente não-negativo).
  • bits 2 7 = 0001102, logo lvert E rvert = 6. Como bit 1 = 0, E = +6.
  • bits 8 31 ( 24 bits) formam a mantissa inteira em binário. O primeiro desses 24 bits (bit 8) é 0, portanto a mantissa inicia em 0···{} e M < 2^23/2^23 = 1. Em ponto flutuante binário normalizado esperamos a mantissa começando com 1 bit ``1''. Concluímos que NÃO está normalizado.

Passo 3

Normalização. A mantissa começa em 0 e o primeiro “ 1” aparece em bit 9. Para que o bit 8 passe a ser 1, deslocamos todos os 24 bits da mantissa uma posição à esquerda (multiplicando M por 2) e reduzimos o expoente em 1, isto é
E' = E - 1 = 6 - 1 = 5
O novo campo mantissa (bits 8 31) é o original deslocado à esquerda com um 0 de preenchimento em bit 31. Em notação de bits (listar apenas os 24 bits):
underbrace1,0,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,024 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
4,12292times10^1
Portanto, em F(10,6,-10,10) o número fica
boxed+,4,12292times10^1

Resposta

(a) Não está normalizado. A forma normalizada é
s=0,expoente=+5 (0001012), mantissa=1,0,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,0
(b) Positivo.
(c) lvert xrvert>1.
(d) Em F(10,6,-10,10):
+,4,12292times10^1

Exercícios relacionados