首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言統計二進制中 1 的個數:三種算法從入門到精通

     編輯:關於C

題目

輸入一個整數,返回其二進制表示中 1 的位元個數(Hamming Weight / Population Count)。

方法一:取模除二法(直觀但慢)

int count_bits(unsigned int n) {
    int cnt = 0;
    for (int i = 0; i < 32; i++) {
        if (n & 1) cnt++;
        n >>= 1;
    }
    return cnt;
}

固定 32 次迴圈,適合硬體無條件指令的場景。

方法三:Brian Kernighan 算法(大師級)

算法耗時(相對)備註
取模除二1.00x基準
移位 32 次0.65x固定迴圈
Kernighan0.18x稀疏 1 時極快
內建 __builtin_popcount0.05x編譯器指令級優化


生產代碼建議

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved