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 31
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 0
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 \mathrm{F}(10,6,-10,10) (i.e., base decimal, 6 dígitos na mantissa, e expoente variando de \{-10, \cdots, 10\} )?

Passo 1

O enunciado pede quatro coisas: (a) verificar se o número está normalizado e, se não estiver, normalizá‑lo; (b) dizer se o número é positivo ou negativo; (c) dizer se, em módulo, o número é menor do que 1 ou maior do que 1; (d) escrever a mesma quantidade no sistema \mathrm{F}(10,6,-10,10) (base decimal, 6 dígitos de mantissa, expoente em \{-10,\dots,10\}).
As informações dadas (extraídas diretamente da tabela de bits do enunciado) são:
  • Primeiro bit (bit 0) — sinal do número: \;0.
  • Segundo bit (bit 1) — sinal do expoente: \;0.
  • Próximos seis bits (bits 2 a 7) — magnitude do expoente em binário: \;0\,0\,0\,1\,1\,0.
  • Últimos vinte e quatro bits (bits 8 a 31) — mantissa (bits da fração), da esquerda para a direita:
\;0\;1\;0\;1\;0\;0\;1\;0\;0\;1\;1\;1\;0\;1\;1\;0\;1\;1\;1\;1\;0\;1\;1\;0.
Vou usar essas informações para responder (a)–(d).

Passo 2

Interpretação numérica do formato usado e cálculo do valor exato (passo‑a‑passo didático).
Como a máquina usa base binária e os campos foram descritos, uma maneira natural de ver o valor real é:
  • o bit de sinal S (-1)^S;
  • o expoente tem sinal S_E e magnitude E (aqui S_E=0 significa expoente positivo);
  • a mantissa está armazenada como 24 bits de fração b_1 b_2 \dots b_{24}. Vou interpretar que esses 24 bits representam a fração
M = \sum_{i=1}^{24} b_i 2^{-i} = \frac{m}{2^{24}},
onde m é o inteiro cujo binário é b_1b_2\ldots b_{24}.
O valor numérico é então
V = (-1)^S \cdot M \cdot 2^{\text{expoente}},
com expoente (assinado) \text{expoente} = (+1)\cdot E porque o bit de sinal do expoente é 0 (positivo).
Agora extraio os campos numericamente:
  • S=0 (logo número positivo).
  • S_E=0 (expoente positivo).
  • Bits do expoente E são 000110_2. Em decimal, E = 0\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 = 6.
  • A mantissa em bits b_1\ldots b_{24} forma o inteiro (agrupando em hex para facilitar) m = \text{binary }010100100111011011110110_2 = \text{hex }0x5276F6. Convertendo, m = 5\,404\,406.
Substituindo em V:
M = \frac{m}{2^{24}},\qquad V = M\cdot 2^{6} = m\cdot 2^{6-24} = m\cdot 2^{-18} = \frac{5\,404\,406}{262\,144}.
Fazendo a divisão (cálculo exato por divisão longa), obtemos a expansão decimal
V \approx 20{,}6161727905\ldots
(é suficiente saber alguns dígitos para os próximos itens).

Passo 3

Verificação de normalização e processo para normalizar (explicação didática).
O que significa “normalizado” em ponto flutuante binário? Significa que a mantissa/significand está colocada de modo que, na base 2, a parte antes da vírgula seja 1 (ou seja, o significand está na forma 1.\text{(bits)}), isto é, 1 \le significand < 2. Em termos dos bits armazenados sem bit oculto, isso corresponde a ter o primeiro bit da mantissa igual a 1.
Aqui o primeiro bit da mantissa b_1 é 0 (veja passo 1). Portanto, o número NÃO está normalizado.
Como normalizar? Procedimento:
  • Encontrar o primeiro bit 1 na mantissa; aqui ele aparece em b_2 (ou seja, o segundo bit do campo de mantissa).
  • Deslocar a mantissa à esquerda até que esse 1 passe a ser o primeiro bit b_1. Cada deslocamento à esquerda por uma posição multiplica M por 2; para manter o mesmo valor V devemos então reduzir o expoente em 1 para cada deslocamento (porque M\cdot 2 \cdot 2^{E-1} = M\cdot 2^{E}).
  • Aqui só é preciso deslocar uma posição ( k=1), porque b_2=1. Assim o novo expoente será E' = E - 1 = 6 - 1 = 5 (positivo), e a nova mantissa (24 bits) é a antiga deslocada uma posição à esquerda, completando com zero à direita.
Calculando a mantissa normalizada (deslocamento de uma posição):
  • Mantissa original b_1\ldots b_{24} = 0\,1\,0\,1\,0\,0\,1\,0\,0\,1\,1\,1\,0\,1\,1\,0\,1\,1\,1\,1\,0\,1\,1\,0.
  • Após deslocar 1 bit à esquerda obtemos b'_1\ldots b'_{24} = 1\,0\,1\,0\,0\,1\,0\,0\,1\,1\,1\,0\,1\,1\,0\,1\,1\,1\,1\,0\,1\,1\,0.
Portanto a representação normalizada (campos) passa a ser:
  • sinal S=0;
  • sinal do expoente S_E=0 (continua positivo);
  • bits do expoente (magnitude) para E'=5 são 000101_2;
  • mantissa normalizada (24 bits) é 10100100111011011110110.
Em notação de 32 bits (campo a campo):
\;0\; \;0\; \;000101\; \;10100100111011011110110.

Passo 4

Sinal do número (resposta de (b)) — explicação curta e clara.
O primeiro bit (bit 0) vale \;0. Pelo formato dado, isso indica sinal positivo. Logo o número é positivo.

Passo 5

Comparação do módulo com 1 (resposta de (c)) — explicação usando normalização e valor decimal.
Se o número normalizado tem forma 1.\text{(bits)}\times 2^{E'} e E'\ge 1 então certamente o valor em módulo é maior que 1. Aqui, após normalização encontramos E'=5 (positivo), portanto o módulo é muito maior que 1. Confirmação numérica: V\approx 20{,}616\dots > 1.

Passo 6

Conversão para \mathrm{F}(10,6,-10,10) (resposta de (d)) — como fazer, passo a passo.
O sistema \mathrm{F}(10,6,-10,10) usa base decimal e mantissa com 6 dígitos significativos (um dígito antes da vírgula e mais 5 após, total 6 dígitos significativos), em forma normalizada d_0.d_1d_2d_3d_4d_5\times 10^{e} com d_0\in\{1,\dots,9\} e e\in\{-10,\dots,10\}.
Nós já temos o valor decimal aproximado:
V \approx 20{,}6161727905\ldots
Para normalizar em base 10 escrevemos V = 2{,}06161727905\ldots \times 10^{1}. Agora aplicamos arredondamento para 6 dígitos significativos. Os seis primeiros dígitos significativos são 2\,0\,6\,1\,6\,1 (ou seja, 2{,}06161\ldots); o sétimo dígito é 7, portanto arredondamos o sexto dígito 1 para 2. Assim a mantissa com 6 dígitos fica 2{,}06162.
O expoente resultante é e=1, que está dentro do intervalo permitido -10\le e\le 10. O sinal é positivo.
Logo, na notação pedida,
\boxed{+\,2{,}06162\times 10^{1}}.

Resposta

(a) Não. Normalizada (campos): \;0\;0\;000101\;10100100111011011110110.
(b) Positivo.
(c) Em módulo é maior do que 1.
(d) \;+\;2{,}06162\times 10^{1}.

Exercícios relacionados