lowbit
介绍
lowbit
操作是求出非负整数x
的最后一位1
所表示的数值。
原理
假设有一个非负整数x
,我们知道x的负数用二进制表示是x取反+1
以
12
12
12为例,
12
=
1100
12 = 1100
12=1100,
−
12
=
0011
+
1
=
0100
-12 = 0011 + 1 = 0100
−12=0011+1=0100
也就是说要求出x的最后一位1,只需要求
x
&
−
x
x\&-x
x&−x即可,因为它们除了最后一位1相同其他数字都相反。
因此可以求出
l
o
w
b
i
t
(
12
)
=
10
0
2
=
4
10
lowbit(12) = 100_2 = 4_{10}
lowbit(12)=1002=410。
代码
int lowbit(int x){
return x & -x;
}