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