輸入一個整數,返回其二進制表示中 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 次迴圈,適合硬體無條件指令的場景。
算法 耗時(相對) 備註 取模除二 1.00x 基準 移位 32 次 0.65x 固定迴圈 Kernighan 0.18x 稀疏 1 時極快 內建 __builtin_popcount0.05x 編譯器指令級優化 生產代碼建議