Um computador armazena números reais utilizando 1 bit para o sinal do número, 7 bits para o expoente e 8 bits para a mantissa. Admitindo que haja truncamento, como ficariam armazenados os seguintes números decimais? (Utilize o enunciado para responder às questões de 5 a 10).
Qual é o maior número menor que 20 nele representável?

Passo 1

Vou listar claramente o que o enunciado nos dá e o que ele pede. Dados do problema:
  • Um formato de ponto flutuante com:
    • 1 bit de sinal;
    • 7 bits de expoente;
    • 8 bits de mantissa (bits fracionários);
  • Há truncamento da mantissa (ou seja, não há arredondamento, apenas corte dos bits além de 8).
    O que se pede:
  • “Qual é o maior número menor que 20 nele representável?” — ou seja, dado esse formato, encontrar o maior valor representável que seja estritamente menor que \,20.

Passo 2

Explicando como funciona o formato (passo-a-passo, sem pular nada).
  • Números normalizados em ponto flutuante são representados como
\text{valor} = (-1)^{\text{sinal}}\times(1+\text{frac})\times 2^{e},
onde:
  • \text{frac} é a fração obtida a partir dos bits da mantissa (um número entre \,0 e \,1-2^{-8} neste caso);
  • e é o expoente real (um inteiro com sinal), obtido subtraindo-se o bias do expoente armazenado.
  • O bias para um campo de expoente com k bits é
\text{bias} = 2^{k-1}-1.
Aqui k=7, então calculamos o bias no próximo passo.

Passo 3

Calcular o bias do expoente:
\text{bias} = 2^{7-1}-1 = 2^{6}-1 = 64-1 = 63.

Passo 4

Converter \,20 para forma binária normalizada.
  • Primeiro, a representação inteira em binário:
20_{10}=10100_{2}.
  • Normalizando (colocar como 1.\text{alguns bits}\times 2^{e}):
10100_{2}=1{,}0100_{2}\times 2^{4}.
Logo o expoente real é e=4 e a mantissa fracionária (logo após o ponto binário) começa com \,0100 seguido por zeros infinitos.

Passo 5

Determinar os bits da mantissa armazenada (8 bits) aplicando truncamento.
  • A parte fracionária normalizada é \,0100 0000\ldots (bits: 0,1,0,0,0,0,\ldots).
  • Truncando para 8 bits a mantissa armazena exatamente
\text{mantissa (bits)} = 01000000_{2}.
Em inteiro isso vale M=64 (porque 01000000_2=64).

Passo 6

Determinar o campo do expoente armazenado.
  • O expoente real é e=4. O expoente com bias é
E = e + \text{bias} = 4 + 63 = 67.
  • Em binário com 7 bits:
67_{10}=1000011_{2}.

Passo 7

Concluir que \,20 é exatamente representável neste formato.
  • O número representado por esses campos é
(1+\tfrac{M}{2^{8}})\times 2^{4}=(1+\tfrac{64}{256})\times 16=(1+0{,}25)\times 16=1{,}25\times 16=20.
Portanto \,20 está representado exatamente por: sinal 0, expoente \,1000011 e mantissa \,01000000.

Passo 8

Como \,20 é representável, o maior número menor que \,20 será o predecessor imediato na malha de ponto flutuante com o mesmo expoente: ou seja, decrementar em uma unidade o campo inteiro da mantissa armazenada (quando possível) mantendo o mesmo expoente armazenado.
  • O campo mantissa atual é M=64. O predecessor tem M'=M-1=63, cujo campo em bits é \,00111111_{2}.

Passo 9

Calcular o valor correspondente ao predecessor (o maior representável menor que \,20).
  • A fração armazenada passa a ser \tfrac{M'}{2^{8}}=\tfrac{63}{256}.
  • Assim o valor é
\text{valor}'=(1+\tfrac{63}{256})\times 2^{4}.
Calculemos passo a passo:
1+\tfrac{63}{256}=\tfrac{256+63}{256}=\tfrac{319}{256}=1{,}24609375,
\text{valor}'=1{,}24609375\times 16=\tfrac{319}{256}\times 16=\tfrac{319}{16}=19{,}9375.

Passo 10

Interpretação e conclusão didática curta:
  • A diferença entre \,20 e seu predecessor é o menor incremento representável na vizinhança de \,20 (o ULP na escala 2^{4}), aqui igual a
20-19{,}9375=0{,}0625=2^{-4}.
  • Então o maior número estritamente menor que \,20 representável neste formato (com truncamento) é \,19{,}9375.

Resposta

\,19,9375

Exercícios relacionados