確定一個數二進制形式中 1 的個數

如何得出一個數二進制形式的 1 的個數

思考兩個問題:

1 . 二進制形式中 1 的個數,需要把十進制轉換成二進制麼 ?

根本沒必要,數據在計算機中就是以二進制形式存儲的,只是我們看到的是十進制而已,我操作十進制實際上就是在操作相應存儲空間的二進制位數據。

2. 如何確定二進制形式中 1 的個數 ?

方法 1 . 移位操作:對數據進行右移操作,把移動後的結果和 0x1 按位相與操作,如果結果是 1 ,則該數的最低位是1 ,這樣確定了一個 1 啦 ,以此類推。

方法 2 . 自身按位與:自身和自身減一相與,當 自身變爲0 是,結束循環。


如何實現:

C++實現

#include <iostream>

using namespace std;

int main(int argc, char const *argv[])
{
    int count = 0;
    int m = 9999;

    while( m )  
    {
        if(m & 1) count++;
        m >>= 1;
    }
    /*
    while( m )
    {
        count++;
        m = m & (m - 1);
    }
    */

    cout << count <<endl;

    return 0;
}

結果是:

8


總結:

涉及到二進制級別的操作,移位,異或,與,或,非操作是首選的操作方法。

發佈了66 篇原創文章 · 獲贊 35 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章