x & (-x)

结论

 整数运算x & (-x),当x为0时结果为0;x为奇数时,结果为1;x为偶数时,结果为x中2的最大次方的因子。

解析

&是按位与操作,即:
    1 & 1 = 1, 1 & 0 = 0, 0 & 0 = 0。
因为负数的补码 = 正数的补码取反 + 1,因此若没有+1的存在, x & (-x)的结果就是0。
分析一下可知,该操作保留的是正数的最低有效bit。

任意一个数(不管奇偶),都可以表示成 
    2^a + 2^b + 2^c + ......
如果a是a、b、c......中的min,那么x & (-x) = 2^a。
奇数时,min = 0,所以x & (-x) = 1;0时,x & (-x) = 0;除零以外的偶数,x & (-x) = 2^a,这里2^a需要是x的所有因子中,最大的2的幂。
全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
点赞 评论 收藏
分享
07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务