Leetcode.191.Number of 1 Bits

题目

给定一个无符号整数, 求出其中二进制数中有多个1.

Input: 11(00000000000000000000000000001011)
Output: 3

思路

采用&运算, 当(x&(1<说明x的第i位为1.

int hammingWeight(uint32_t n) {
    int res = 0;
    int i = 0;
    while (n > 0) {
        int x = 1 << i++;
        if ((n & x) == x) {
            n -= x;
            res++;
        }
    }
    return res;
}

总结

巧妙使用位运算, 掌握位运算的使用场景.

你可能感兴趣的:(Leetcode.191.Number of 1 Bits)