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的幂。
全部评论

相关推荐

我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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