java – 以1 << n格式向左移位的反转
作者:互联网
假设我有以下位掩码:
1 << 1, // 2
1 << 2, // 4
1 << 3, // 8
1 << 4, // 16
1 << 5, // 32
1 << 6 // 64
我想得到’逆’.
这样做的工作:
void foo(int n) {
int c = 1;
while (n/2 >= 2) {
n /= 2;
c++;;
}
println(c);
}
例如,1<< 4导致16.如果我运行foo(16)它打印4.
但是,我觉得它可以做得更简单,但我无法弄清楚如何.
可能吗?
解决方法:
BigInteger有许多有用的方法 – 包括getLowestSetBit().它可能会尽可能快地完成它.
public void test() {
System.out.println(BigInteger.valueOf(16).getLowestSetBit());
}
标签:java,bit-shift 来源: https://codeday.me/bug/20190623/1273154.html