二进制中1的个数

2017-02-15  本文已影响27人  ibyr
Question

对于一个无符号整型变量,求其二进制表示中1的个数。
[题目来源:编程之美]

Note
Extension
Solution
// 解法一:求二进制表示中1的位数:n & (n-1)。
public int countOnes(int num) {
    int count = 0;
    while (num > 0) {
        num &= num - 1;    // key
        count++;
    }
    return count;
}
// 解法二:右移位
public int countOnes(int num) {
    int count = 0;
    while (num > 0) {
        count += num & 0x01;
        num >> 1;
    }
    return count;
}
上一篇下一篇

猜你喜欢

热点阅读