sc_*_*ray 6 java algorithm math bit-manipulation
我正在读某个地方:
大于lg N的最小整数是以二进制表示N所需的位数,与大于log10 N的最小整数是以十进制表示N所需的位数相同.
Java语句
Run Code Online (Sandbox Code Playgroud)for (lgN = 0; N > 0; lgN++, N /= 2) ;
是计算大于lg N的最小整数的简单方法
我可能在这里遗漏了一些东西但是Java语句如何计算大于lg N的最小整数?
如果重写为while循环可能会更清楚:
lgN = 0
while( N > 0 ) {
lgN++;
N = N/2;
}
Run Code Online (Sandbox Code Playgroud)
这可以被认为是"在我们移开所有1之前我们必须多少次右转"(让我们留下零)
仅在示例输入上追踪此内容有任何问题吗?
step 1) N = 10, lgN = 0
step 2) N = 5, lgN = 1
step 3) N = 2, lgN = 2
step 4) N = 1, lgN = 3
step 5) N = 0, lgN = 4
Run Code Online (Sandbox Code Playgroud)
lgN最后是4。这是大于的最小整数log(2, 10)
归档时间: |
|
查看次数: |
844 次 |
最近记录: |