Conversão e Erro: Converta o número decimal (33.4)_{10} para a base 2 usando um computador hipotético com 8 bites, sendo 1 bit para sinal, 4 bits para a mantissa e 3 para o expoente. Qual o erro absoluto cometido? E se forem 4 bits para o expoente e 3 para a mantissa?

Passo 1

O que o enunciado pede e o que nos foi dado:
  • Converter o número decimal (33,4)_{10} para ponto flutuante numa máquina hipotética de 8 bits com:
    • Caso A: 1 bit para sinal, 4 bits para mantissa e 3 bits para expoente.
    • Caso B: 1 bit para sinal, 3 bits para mantissa e 4 bits para expoente.
  • Calcular o erro absoluto cometido em cada caso.
    Informações relevantes dadas:
  • O número a converter é positivo, logo o bit de sinal será 0.
  • Para representar o valor em ponto flutuante normalizado usaremos a convenção com mantissa normalizada (dígito implícito 1.xxxx) e um expoente com bias (viés).
  • Não foi especificado tratamento de overflow; haverá que explicar o que acontece se o expoente necessário não couber no campo.

Passo 2

Breve aula: formato de ponto flutuante que vamos usar (didática, sem pular etapas)
  • Um número em ponto flutuante normalizado é escrito como
\pm 1.\text{(mantissa)} \times 2^{e},
onde e é o expoente real.
  • O campo de expoente armazenado (chamado E_{\text{armazenado}}) é um inteiro sem sinal de E bits. Usa-se um bias (viés) para permitir expoentes negativos:
\text{bias} = 2^{E-1}-1.
  • O expoente real vale
e = E_{\text{armazenado}} - \text{bias}.
  • A mantissa armazenada tem M bits; a mantissa “real” (o significando) é 1.\text{(bits da mantissa)}.
  • Valores especiais (na prática) costumam reservar o padrão com todos os bits de expoente iguais a 1 para infinito/NaN; os valores com expoente 0 são subnormais. O intervalo de expoentes normais armazenáveis é E_{\text{armazenado}} = 1,2,\dots,2^{E}-2.
  • Para arredondamento quando truncamos a mantissa, usamos o esquema “round to nearest” (arredonda para o mais próximo); se estiver exatamente no meio aplicaria-se tie-to-even, mas vamos ver o caso concreto.

Passo 3

Converter 33,4 para binário (passo a passo)
  1. Parte inteira: 33_{10} = 32 + 1 = 2^{5} + 2^{0}. Logo
33_{10} = 100001_{2}.
  1. Parte fracionária: converter 0,4 para binário por multiplicações sucessivas:
  • 0,4 \times 2 = 0,8 \Rightarrow bit 0, resto 0,8.
  • 0,8 \times 2 = 1,6 \Rightarrow bit 1, resto 0,6.
  • 0,6 \times 2 = 1,2 \Rightarrow bit 1, resto 0,2.
  • 0,2 \times 2 = 0,4 \Rightarrow bit 0, resto 0,4 (retornamos ao mesmo resto).
    Portanto a parte fracionária repete com período 4:
0,4_{10} = 0,\overline{0110}_{2} = 0.01100110\ldots_{2}.
  1. Juntando:
33,4_{10} = 100001.01100110\ldots_{2}.

Passo 4

Normalizar a representação (colocar na forma 1.\text{mantissa}\times 2^{e})
  • A representação binária é 100001.0110\ldots. O bit mais significativo é em posição 2^{5}, então
100001.0110\ldots_{2} = 1.0000101100110\ldots_{2} \times 2^{5}.
  • Daqui a mantissa (após o 1.) começa com os bits
\text{mantissa completa} = 0000101100110\ldots
e o expoente real requerido é e = 5.

Passo 5

Caso A: 1 bit sinal, 4 bits mantissa ( M=4), 3 bits expoente ( E=3)
  1. Calcular o bias:
\text{bias} = 2^{E-1}-1 = 2^{2}-1 = 3.
  1. Expoente armazenado necessário:
E_{\text{armazenado}} = e + \text{bias} = 5 + 3 = 8.
Mas com E=3 bits o campo do expoente só pode representar valores inteiros de 0 a 2^{3}-1=7. Logo E_{\text{armazenado}}=8 não cabe: isto implica overflow do expoente.
3) Consequências práticas (explicar opções):
  • Em formatos reais (como IEEE) isso causa overflow: o número é maior que o máximo normal representável e normalmente resulta em + \infty (ou sinal de overflow).
  • Se, alternativamente, a máquina não põe infinito e apenas armazena o maior número finito representável (saturação), então devemos calcular esse maior valor finito e o erro correspondente.
  1. Calcular o maior número finito normal representável (caso de saturação) para E=3, M=4:
  • O maior E_{\text{armazenado}} para normal é 2^{E}-2 = 6 (porque geralmente o padrão reserva E_{\text{armazenado}}=2^{E}-1 para \infty).
  • Expoente real máximo: e_{\max} = 6 - \text{bias} = 6 - 3 = 3.
  • A maior mantissa (quando todos os bits da mantissa são 1) vale 1 + (1-2^{-M}) = 2 - 2^{-M}. Com M=4 isso é 2 - 2^{-4} = 2 - \tfrac{1}{16} = \tfrac{31}{16} = 1,9375.
  • Então o maior número finito aproximado é
V_{\max} = \left(2 - 2^{-4}\right)\times 2^{e_{\max}} = \tfrac{31}{16}\times 2^{3} = \tfrac{31}{16}\times 8 = \tfrac{31}{2} = 15,5.
  1. Erro absoluto no caso de saturação:
\text{erro} = \bigl|33,4 - 15,5\bigr| = 17,9.
Resumo do Caso A:
  • Expoente necessário não cabe (overflow). Se a máquina produz + \infty, o erro absoluto é infinito; se a máquina saturar para o maior finito representável, o valor armazenado seria 15,5 e o erro absoluto seria 17,9.

Passo 6

Caso B: 1 bit sinal, 3 bits mantissa ( M=3), 4 bits expoente ( E=4)
  1. Calcular bias:
\text{bias} = 2^{E-1}-1 = 2^{3}-1 = 7.
  1. Expoente armazenado necessário:
E_{\text{armazenado}} = e + \text{bias} = 5 + 7 = 12.
Com E=4 bits o campo do expoente comporta 0 a 15, então 12 cabe. Em binário de 4 bits:
12_{10} = 1100_{2}.
  1. Montar e arredondar a mantissa com M=3 bits:
  • A mantissa normalizada, começando após o 1., é
0000101100110\ldots
  • Precisamos guardar apenas M=3 bits: pegar os três primeiros bits: b_1 b_2 b_3 = 0\,0\,0.
  • Para decidir arredondamento, olhamos ao bit seguinte (guard bit) que é b_4 = 0. Como o guard bit é 0, o valor está mais próximo de truncar do que de arredondar para cima; portanto não arredondamos.
  • Logo a mantissa armazenada fica 000.
  1. Valor representado por esses campos:
  • Sign bit =0.
  • Expoente armazenado =12 (binário 1100), portanto expoente real e = 12 - 7 = 5.
  • Mantissa armazenada representa 1.000_{2} = 1.
  • Valor representado:
V = 1.0 \times 2^{5} = 2^{5} = 32.
  1. Erro absoluto:
\text{erro} = \bigl|33,4 - 32\bigr| = 1,4.

Resposta

Caso A ( M=4, E=3): expoente necessário não cabe (overflow). Se a máquina usar + \infty, o valor representado é +\infty e o erro absoluto é infinito; se a máquina saturar para o maior finito representável, o valor armazenado seria 15,5 e o erro absoluto seria 17,9.
Caso B ( M=3, E=4): valor representado 32; erro absoluto 1,4.

Exercícios relacionados