Considere o sistema de ponto flutuante F=F(2,6,-14,15).
Qual o maior número de F menor que 4,25 ?

Passo 1

Beleza, resumindo o que a gente tem: é um exercício de ponto flutuante, mais especificamente o sistema
pm(1b1b2b3b4b5b6)2 times 2^e .
Isso significa que todo número normalizado em é da forma
com entre e .
O que a gente precisa fazer: encontrar o maior número de que seja menor que .
Para isso vamos usar conceitos de
  1. conversão de decimal para binário,
  2. normalização em ponto flutuante,
  3. cálculo de espaçamento (ulp) e
  4. achar o predecessor (subtrair uma unidade da mantissa).

Passo 2

Primeiro, transforma 4,25 = 100,012 em binário:
  • parte inteira
  • parte fracionária
    Juntando:

Passo 3

Agora normaliza: a gente quer algo da forma 100.012 = 1.00012 times 2^2 .
4,25 = (1.000100)2 times 2^2,
Como temos 6 bits na mantissa ( ), preenchemos com zeros até dar 6 dígitos depois do ponto:
ou seja e .

Passo 4

Em ponto flutuante normalizado, o espaçamento entre dois números adjacentes com o mesmo expoente ulp = 2^,e - t = 2^,2 - 6 = 2^-4 = 0,0625 é

Passo 5

Para achar o maior número de 1.0001002 - 0.0000012 = 1.0000112 que seja menor que (1.000011)2 times 2^2 , basta tirar uma ulp da representação de .
  • Mantissa de :
  • Subtraindo 1 ulp na mantissa (que é o menor incremento):
Portanto o predecessor é

Passo 6

Converte de volta para decimal:
1.0000112 = 1 + 2^-5 + 2^-6 = 1 + 0,03125 + 0,015625 = 1,046875
Multiplicando por 1,046875 times 4 = 4,1875 :

Resposta

O maior número de que é menor que é 4,1875.

Exercícios relacionados