在java中加倍int lgN次

时间:2013-08-27 04:19:46

标签: java logarithm

我需要测试

的事实
  

如果以整数= 1开头,并将其加倍,则记录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

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

1 个答案:

答案 0 :(得分:4)

你需要为N:4,8,16,32,64,128等选择一个2的幂,或者你需要在这里进行分数加倍:

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

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

所以你得到2 * 2 * 2.