2的n次冪 求一個數2進制中1的個數

將一個數乘以2的N次冪,將數字左移N位即可。

判斷一個數字x是否是2的n次冪,將x&(x-1)即可,如果結果爲零則x是2的N次冪。


x&(x-1)

還有一個功能是,計算一個數,2進製表示的1的數量
int fun(int x)
{
    int countx = 0;
    while (x)
    {
        countx++;
        x = x & (x – 1);
    }
    return countx;
}
因爲每次進行
x & (x – 1)
實際上是將最低位的2的次冪抵消掉,有幾個1,就從地位到高位有幾個2的次冪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章