2017-10-18 19 views
0

我不明白为什么它的工作原理是这样,希望有人能帮助我做一些详细的解释,太感谢你了关于返回不大于N的基数2对数的最大整数。有人可以解释为什么下面的代码工作?

public class Ex14 { 
public static int lg(int N) { 
    int i, n; 
    for (i = 0, n = 1; n <= N; i++) { 
     n *= 2; 
    } 
    return i - 1; 
} 

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

}

+1

你有什么不明白的? – user2023608

+0

@ user2023608 x = log2N,其中x是我们需要得到的答案,并且其意味着N = 2 * 2 * 2 ......(x次),但是为什么在这里使用n = n * 2 –

回答

0

每轮循环,n被乘以二。因此循环运行时,n的值变为1,2,4,8,16 ......。这是产生两个整数幂,对吗?

相关问题