p&(-p) Lowbit(p)

看了线段树的代码的时候看到这个,一开始以为是逻辑判断,但是解释不通,就搜了下,发现是按位与运算。。。

Lowbit(x)是一个求该表达式的函数

int Lowbit(x)
{
  return x&(-x);
}

 

总结一下就是:

求2^p。(p 为 x 的二进制表示数中, 右向左数第一个1的位置,从第0个位置开始数),如6的二进制表示为110,向左数第零个为0,第一个为1,则p=1,故Lowbit(6) = 2^1 = 2。20同理,二进制数为10100,Lowbit(20)=2^2=4。

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/81285345
p
P2P
今日推荐