Sendo x=(1010101)2, qual o menor valor de y tal que x+y seja diferente de x em uma máquina F(b,|M|,|E|)=F(2,26,8) e B I A S=129.

Passo 1

Beleza, aqui o enunciado diz que temos um número em binário
x = (1010101)2
e a máquina de ponto flutuante é na base 2, com |M|=26 bits de fração, |E|=8 bits de expoente e viés (BIAS) =129.
O que queremos é o menor y>0 tal que, quando a gente faz x + y na máquina, o resultado seja diferente de x.
Conteúdo: ponto flutuante, representação normalizada, “spacing” (ulp) em torno de x.

Passo 2

Primeiro vamos entender x e como ele fica normalizado:
  1. Converte (1010101)2 pra decimal ou direto pros componentes do float:
    • Em decimal, x = 1·2^6 + 0·2^5 + 1·2^4 + 0·2^3 + 1·2^2 + 0·2^1 + 1·2^0 = 64 +16 +4 +1 =85.
  2. Pra normalizar em base 2 a mantissa deve ficar entre 1 e 2: 85 = 10101012 = 1.010101012 times 2^6
    Então o expoente (antes do bias).

Passo 3

Agora, como a mantissa tem |M|=26 bits de fração, ela ganha 1 bit “oculto” na frente, totalizando
p = 26 + 1 =27 bits de precisãoã
Em ponto flutuante binário normalizado, o espaçamento (ulp) na vizinhança de um número com expoente ulp(x) = 2^,e - p + 1 vale
Isso vem do fato de que o bit de menor peso na fração vale vezes a escala .

Passo 4

Substituindo ulp(x) ;=; 2^,6 - 27 + 1 ;=; 2^-20 e :

Esse é justamente o menor incremento que a máquina consegue distinguir em torno de .

Resposta

O menor valor de boxedy = 2^-20 tal que seja diferente de é

Exercícios relacionados