lowbit()函数用来取一个二进制最低位的一与后边的0组成的数
例如:
5=101 ==> lowbit(5)=1
6=110 ==> lowbit(6)=2(10)
(1)算法:
int lowbit(int x)
{
return x&(-x);
}
- 原理:二进制数的负数是正数取反加一
(2)应用:
- 熟悉树状数组的同学都知道,
lowbit
可以快速求得 x 二进制表示中最低位 1 表示的值。 - 如果一个数
n
是【2的幂】,那么有lowbit(n) = n
的性质(2的幂的二进制表示中必然是最高位为1,低位为 0)。 - 求2的幂:
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & -n) == n;
}
}