lowbit函数原理
lowbit()函数所求的是最低位1的位置
也可以通过位运算来计算 :
int Lowbit(x) {
return x&(-x);
}
例如:
1> x = 1:
十进制转二进制(设位数为8):
1 => 0000 0001
-1=> 1111 1111**(此处为1的补码)**
1&(-1)的二进制位运算为(同1异0):
所以1&(-1)=1
2> x = 6:
十进制转二进制(设位数为8):
6 => 0000 0110
-6=> 1111 1010**(此处为6的补码)**
6&(-6)的二进制位运算为(同1异0):
所以6&(-6)=2
总结:
求出(其中p: x 的二进制表示数中, 右向左数第一个1的位置),
如6的二进制表示为110,向左数第零个为0,第一个为1,则p=1,
故。
或直接理解为:二进制按位与运算,返回不大于x的2的最大次方因子
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狐狸的被窝!
评论
WalineValine