Leetcode

Leetcode.191.Number of 1 Bits

2019-11-18  本文已影响0人  Jimmy木

题目

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

Input: 11(00000000000000000000000000001011)
Output: 3

思路

采用&运算, 当(x&(1<<i)) == (1<<i)说明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;
}

总结

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

上一篇下一篇

猜你喜欢

热点阅读