编程语言
首页 > 编程语言> > java – 以1 << n格式向左移位的反转

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