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 に答える