Leetcode.191.Number of 1 Bits

题目

给定一个无符号整数, 求出其中二进制数中有多个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;
}

总结

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容