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.
(a) O número está normalizado? Se não, normalize-o.
Passo 1
Beleza, a questão é sobre formatação de ponto‐flutuante em base 2, com 32 bits distribuídos assim:
- 1 bit de sinal do número
- 1 bit de sinal do expoente
- 6 bits de valor absoluto do expoente
- 24 bits da mantissa (sem bit implícito)
Eles dão os 32 bits e pedem: “(a) está normalizado? Se não, normalize.”
Para resolver, vamos extrair sinal, expoente e mantissa, ver se o primeiro bit da mantissa é 1 (condição de normalização em binário) e, se não estiver, “shiftar” a mantissa até ela começar com 1, ajustando o expoente.
Para resolver, vamos extrair sinal, expoente e mantissa, ver se o primeiro bit da mantissa é 1 (condição de normalização em binário) e, se não estiver, “shiftar” a mantissa até ela começar com 1, ajustando o expoente.
Passo 2
Primeiro, isolamos cada campo a partir dos bits fornecidos:
- Bit 0 (sinal do número): 0 → número positivo.
- Bit 1 (sinal do expoente): 0 → expoente positivo.
- Bits 2–7 (valor absoluto do expoente): 000110₂ = 6₁₀, logo E = +6.
- Bits 8–31 (mantissa sem sinal oculto):
0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0
Em notação, a mantissa M vale
e o valor real é
Passo 3
Em ponto‐flutuante normalizado binário, exige‐se que a mantissa comece com 1 (isto é, seja da forma
). Aqui o primeiro bit da mantissa é 0, então NÃO está normalizado.
Passo 4
Para normalizar, a gente desloca a mantissa à esquerda até aparecer 1 no primeiro lugar e, para manter o mesmo valor V, decrementa o expoente a cada deslocamento.
A mantissa começa 0.0 1… → o primeiro 1 está na segunda posição. Então empurramos tudo 1 casa pra esquerda (multiplicamos M por 2) e reduzimos E de 6 para 5:
-
Novo expoente: E′ = 6 − 1 = 5 → em 6 bits fica 000101₂.
-
Nova mantissa, pegando os bits originais 9–31 e enchendo com 0 no final:original bits 9–31 =
1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0então
Passo 5
Reescrevendo tudo em bits:
- Sinal do número: 0
- Sinal do expoente: 0
- Expoente (6 bits): 000101
- 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
Ou, em notação curta:
Resposta
O número não está normalizado. A forma normalizada é
0 | 0 | 000101 | 101001001110110111101100
que equivale a
.
0 | 0 | 000101 | 101001001110110111101100
que equivale a