当前位置: 代码迷 >> 综合 >> 【lowbit(x)】
  详细解决方案

【lowbit(x)】

热度:45   发布时间:2024-01-18 01:42:43.0

int lowbit(int x)

{
     return x&(-x);

}

lowbit(x) 即是求2^p(p表示x的二进制中从右到左第一个1的后面有几个0)

例如lowbit(1):

 1的二进制是0000 0001

-1的二进制是1111 1111(先改符号位,再按位取反,符号位不变,最后末位加一)

1&(-1)   0000 0001 

      &    1111 1111

-----------------------------

             0000 0001

所以lowbit(1)=1    (即2^0,第一个1后面有0个0)