Você candidato(a) a engenheiro(a), nos seus projetos utilizará computadores de 64bits. Por melhor que seja a precisão de um computador de precisão dupla, ele ainda cometerá erros. Mostre que você entende a ocorrência desses erros e transforme o número -14,123.
Converta a mantissa e o expoente polarizado para números binários. Considere na transformação da mantissa um erro de 0,03 (erro relativo).
Converta a mantissa e o expoente polarizado para números binários. Considere na transformação da mantissa um erro de 0,03 (erro relativo).
Passo 1
Beleza, colega! O enunciado quer que a gente pegue o número –14,123 e monte sua representação em ponto flutuante de 64 bits (IEEE 754: 1 bit de sinal, 11 bits de expoente polarizado, 52 bits de mantissa). A lição aqui é:
- Converter em notação científica binária normalizada.
- Calcular o expoente “com bias” (polarizado).
- Converter a mantissa (fração) pra binário, mas admitindo um erro relativo de 0,03 (ou seja, 3% de “distorção” na mantissa pra ilustrar como o computador arredonda).
Passo 2
Primeiro, o bit de sinal (S). Como o número é –14,123, S = 1.
Passo 3
Transformando 14,123 em notação binária científica:
- Parte inteira: 14₁₀ = 1110₂
- Parte fracionária: 0,123₁₀ → multiplicações sucessivas por 2 dão, aproximando,
0,123·2 = 0,246 → 0
0,246·2 = 0,492 → 0
0,492·2 = 0,984 → 0
0,984·2 = 1,968 → 1 (resto .968)
… e por aí vai.
Juntando, 14,123 ≈ 1110,0001…₂. Pra normalizar, movemos o ponto 3 casas:
14,123₁₀ = 1,765375…₂ × 2³
Logo, nossa mantissa “M real” é 1,765375… e o expoente “E real” é +3.
Passo 4
Agora polarizamos o expoente:
Bias para dupla precisão = 1023.
Eₚₒₗₐᵣ = E_real + 1023 = 3 + 1023 = 1026
Em binário (11 bits):
1026₁₀ = 10000000010₂
Bias para dupla precisão = 1023.
Eₚₒₗₐᵣ = E_real + 1023 = 3 + 1023 = 1026
Em binário (11 bits):
1026₁₀ = 10000000010₂
Passo 5
A mantissa de IEEE754 guarda só a parte depois do “1.” e tem 52 bits. Mas vamos inserir um erro relativo de 0,03:
- Pegamos M_real = 1,765375
- Aplicamos erro de +3%: M_aprox = 1,765375 × (1 + 0,03) ≈ 1,818336
- Separamos a fração f = 0,818336 e convertemos pra binário:
0,818336·2 = 1,636672 → 1
0,636672·2 = 1,273344 → 1
0,273344·2 = 0,546688 → 0
0,546688·2 = 1,093376 → 1
0,093376·2 = 0,186752 → 0
… e assim vai.
Isso gera uma mantissa aproximada começando em:
1,818336 ≈ 1.11010 00100 10111…₂
Como temos 52 bits, preenchemos até lá (vou mostrar só os 16 primeiros da fração, depois zeros):
Mantissa ≈ 1101000100101111 000…000
(esses 52 bits incluem só a parte depois do “1.”, sem repetir o “1” inicial)
Mantissa ≈ 1101000100101111 000…000
(esses 52 bits incluem só a parte depois do “1.”, sem repetir o “1” inicial)
Resposta
Bit de sinal: 1
Expoente polarizado (11 bits): 10000000010
Mantissa (52 bits, com erro ~3%):
1101000100101111000…000 (onde completamos zeros até totalizar 52 bits)
Expoente polarizado (11 bits): 10000000010
Mantissa (52 bits, com erro ~3%):
1101000100101111000…000 (onde completamos zeros até totalizar 52 bits)