C/C++程式計算整數中設定的位數?


計數設定的位數意味著計算給定整數的 1 的個數。為此,我們有多種可應用的解決方案。在本例中,我們有一個二進位制數(整數的二進位制表示),我們必須計算字串中 1 的個數。

為了計算 1 的個數,我們將獲取字串,遍歷每個元素並計算字串中所有 1 的個數。例如,如果我們輸入 17,輸出將為 2,因為 17 的二進位制為 10001,其中包含兩個 1。

Input: Enter a positive integer: 6
Output: 2

解釋

6 的二進位制表示為 110,它有兩個設定的位。

這種迭代方法每個位需要一次迭代。它遍歷數字的所有位。當不再設定位時,迭代終止。在最壞的情況下,在一個只有最高有效位設定的 32 位字上,它將迴圈 32 次迭代。此解決方案是最簡單的解決方案,如果 1 稀疏且位於最低有效位中,則很有用。

示例

#include <stdio.h>
int main(void) {
   unsigned int n = 34;
   for (c = 0; n; n >>= 1) {
      c += n & 1;
   }
   printf("%d\n", c);
}

更新於: 2019-08-19

162 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.