0

我需要测试一个事实

如果你从一个整数 = 1 开始,然后将它加倍 log N(以 2 为底)次,你会得到 N

我以为我会为此编写一些Java代码..但是,这就是我得到的

public class Log2NDoubling {
    public static void main(String[] args) {
        int s = 1;
        int  N = 10;        
        double lg2N = log2(N);
        int intlg2N = (int)lg2N;
        for(int i=0;i< intlg2N;i++){
            s *= 2;
        }
        System.out.println("s="+s);
    }

    private static double log2(int x){
        return Math.log10(x)/Math.log10(2);
    }

}

产生了一个输出

s=8.0

好吧,这并不能完全证明上述陈述......输入数据的错误选择是罪魁祸首还是我的代码?

4

1 回答 1

4

您需要为 N 选择一个 2 的幂数:4、8、16、32、64、128 等,或者您需要在此处进行小数加倍:

int intlg2N = (int)lg2N;
for(int i=0;i< intlg2N;i++){

让我们解决这个问题。log2 (10) 是 3.3219。但是你四舍五入到 3。

所以你得到 2 * 2 * 2。

于 2013-08-27T04:24:27.160 回答