// 算法 1) - O(number of bits)
int countBit_1(int x) {
int ret = 0;
while (x) ret += x&1, x >>= 1;
return ret;
}
// 算法 2) - O(number of 1's)
int countBit_2(int x) {
int ret = 0;
while (x) ret++, x -= x&-x;
return ret;
}
// 算法 3) - O(number of 1's)
int countBit_3(int x) {
int ret = 0;
while (x) ret++, x &= x-1;
return ret;
}
不過,根據統計及分析,最簡單的 算法1) 效率最高。