剑指offer 面试题10:二进制中1的个数

题目
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2为是1。因此如果输入9,该函数输出2.

解法一:

int bit1Cnt(int num) {
    int cnt = 0;
    unsigned int flag = 0x1;
    while (flag) {
        if (num & flag) {
            ++cnt;
        }
        flag <<= 1;
    }
    return cnt;
}

解法二:

int bit1Cnt(int num) {
    int cnt = 0;
    while (num) {
        ++cnt;
        num &= (num - 1);
    }
    return cnt;
}

你可能感兴趣的:(剑指offer 面试题10:二进制中1的个数)