算法复习:位运算

Posted dzzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法复习:位运算相关的知识,希望对你有一定的参考价值。

leetcode 191. 位1的个数

维护匹配串 从1开始逐位移动比较

技术图片
class Solution {
public:
    int hammingWeight(uint32_t n) 
    {     // uint32_t为32位无符号类型数据
        int count=0;
        uint32_t donser=1;
        for(int i=0;i<32;i++)
        {
            if((n&donser)>=1)
                count++;
            donser<<=1;
        }
        return count;
    }
};
leedcode 191

n与n-1取& 

技术图片
class Solution {
public:
    int hammingWeight(uint32_t n) 
    {     
        int count=0;
        while(n)
        {
            n=n&(n-1);
            count++;
        }
        return count;
    }
};
leedcode 191

调用内置函数 __builtin_popcount(n)

class Solution {
public:
    int hammingWeight(uint32_t n) 
    {     // uint32_t为32位无符号类型数据
        return __builtin_popcount(n);
    }
};

 

以上是关于算法复习:位运算的主要内容,如果未能解决你的问题,请参考以下文章

算法复习——状压dp

二进制原码反码补码和位运算

NOIP算法总结与复习

算法笔记:位运算

Linux - Shell - 算数表达式 - 位运算

hashMap源码算法问题