首页 > 其他 > 详细

LowBit原理

时间:2020-11-02 14:29:19      阅读:27      评论:0      收藏:0      [点我收藏+]

owbit(x)是x的二进制表达式中最低位的1所对应的值。

比如,6的二进制是110,所以lowbit(6)=2。

最近回头看树状数组,发现关于lowbit()函数,目前有两种算法。

第一种是比较常见的,也是我一直在用的:

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

最近发现了另一种算法,如下所示:

int lowbit(int x)
{
    return x&(x^(x-1));
}

两种算法的结果都是对的。
相比之下,第一种算法利用了负整数的补码特性,非常的巧妙,而第二种算法用另外一种方式计算出了最低位,其思想跟补码的也很相似。当然还是推荐第一种,不仅巧妙而且好记。

LowBit原理

原文:https://www.cnblogs.com/mirage0/p/13914207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!