当前位置: 代码迷 >> 综合 >> p(-p) Lowbit(p)
  详细解决方案

p(-p) Lowbit(p)

热度:13   发布时间:2023-12-26 10:25:13.0

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

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

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

 

总结一下就是:取出x的最低位1  

就是把k的二进制的高位1全部清空,只留下最低位的1

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