Considere um equipamento cujo sistema de aritmética de ponto flutuante é F(2,10,-15,15). Para este sistema:
Verifique se existem números reais entre o menor e o próximo positivo.

Passo 1

Beleza, o enunciado diz que nosso sistema de ponto-flutuante é
F(2,10,-15,15)
ou seja, base 2, precisão de 10 bits na mantissa (sempre normalizada em 1xxxxxxxx2) e expoentes indo de -15 até +15.
O que querem: descobrir se, entre o menor número positivo representável e o próximo mais alto, ainda sobra algum número real “no meio”.
Pra isso vamos precisar lembrar como se escreve um float normalizado em base 2 e calcular qual é o primeiro e qual é o segundo valor positivos.

Passo 2

Teoria básica de floats normalizados:
  • Um número em F(2,10,-15,15) tem forma x = pm(1b1b2cdots b10)2 times 2^e,
    com ein-15,dots,15 e cada biin0,1.
    - O menor positivo ocorre quando todos os bits da mantissa (além do “1.” inicial) são zero e o expoente é mínimo, isto é e=-15.
    - O próximo positivo difere só no último bit da mantissa (o b10 vira 1).

Passo 3

Calculando o menor positivo:
xmin = (1.0000000000)2 times 2^-15 = 1 times 2^-15 = 2^-15

Passo 4

Calculando o próximo positivo:
  • A mantissa agora é 1.00000000012, ou seja 1 + 2^-10.
  • Com o mesmo expoente e=-15, temos
xsegundo = (1 + 2^-10) times 2^-15 = 2^-15 + 2^-25

Passo 5

O “gap” entre eles é
xsegundo - xmin = (2^-15 + 2^-25) - 2^-15 = 2^-25
Agora pergunte a si mesmo: existem reais entre 2^-15 e 2^-15+2^-25? Claro que sim – você pode escolher qualquer valor
2^-15 + de
e isso é real, mas não cabe no nosso conjunto F(2,10,-15,15).

Resposta

Sim. Há infinitos números reais entre o menor positivo 2^-15 e o próximo 2^-15+2^-25, embora nenhum deles seja representável nesse sistema de ponto-flutuante.

Exercícios relacionados