算法学习 二进制 lowbit函数

lowbit(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));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章