import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Locale;

public class Euler323 {
    public static String solve() {
        int bits = 32;
        BigDecimal expected = BigDecimal.ZERO;
        MathContext mc = MathContext.DECIMAL128;
        BigDecimal two = new BigDecimal(2);

        for (int n = 0; n < 10000; ++n) {
            BigDecimal bitZeroProb = BigDecimal.ONE.divide(two.pow(n, mc), mc);
            BigDecimal allOnesProb = BigDecimal.ONE.subtract(bitZeroProb).pow(bits, mc);
            BigDecimal term = BigDecimal.ONE.subtract(allOnesProb);
            expected = expected.add(term);
            if (term.compareTo(new BigDecimal("1e-20")) < 0) {
                break;
            }
        }

        return String.format(Locale.US, "%.10f", expected);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
