在 C++ 中查詢大型二進位制數中 1 的個數


給定一個 32 位無符號二進位制數,任務是計算設定的位數,即其中存在的“1”。

例如

輸入

N = 00000000000000100111

輸出

4

說明:給定無符號數中存在的總設定位數為 4,因此我們將輸出設定為“4”。

解決此問題的方法

我們給定一個 32 位無符號二進位制數。任務是計算其中存在多少個“1”。

要計算給定二進位制數中存在的“1”的數量,我們可以使用內建 STL 函式“__builtin_popcount(n)”,該函式將二進位制數作為輸入引數。

  • 將二進位制數 N 作為輸入。
  • 函式 count1Bit(uint32_t n) 將 32 位二進位制數作為輸入,並返回二進位制數中存在的“1”的計數。
  • 內建函式 __builtin_popcount(n) 將“n”作為引數輸入,並返回計數。

示例

即時演示

#include<bits/stdc++.h>
using namespace std;
int count1bits(uint32_t n) {
   return bitset < 32 > (n).count();
}
int main() {
   uint32_t N = 0000000010100000011;
   cout << count1bits(N) << endl;
   return 0;
}

執行以上程式碼將生成以下輸出:

輸出

4

在給定的數字中,其中存在 4 個設定位或“1”。因此,輸出為“4”。

更新於: 2021 年 2 月 23 日

3K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告