對設定的位元進行計數意味著對給定整數進行 1 的計數。為此,我們有多種可以應用的解決方案。對於這種情況,我們有一個二進制數(整數的二進位表示),為此我們必須計算字串中 1 的數量。
要計算 1 的數量,我們將取得字串,遍歷每個元素並統計字串中所有1的個數。例如,如果我們輸入 17,則輸出將為 2,因為 17 的二進位為 10001,其中包含兩個 1。
Input: Enter a positive integer: 6 Output: 2
6 的二進位表示形式是 110,它有 2 個設定位元
這種迭代方法需要每位迭代一次。它貫穿數字的所有位。當不再設定任何位元時,迭代終止。在最壞的情況下,對於僅設定最高有效位元的 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); }
以上是C/C++程式:計算一個整數中設定的位數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!