leetcode 191. 位1的个数
给定一个正整数 n
,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数。1 <= n <= 2^32-1
法一:暴力解:
class Solution { public: int hammingWeight(uint32_t n) { int count=0; while(n){ if(n%2==1) count++; n /= 2; } return count; } };
法二:逐位判断
对于二进制数字n
若 n & 1 = 1 ,那么 n 二进制最右位为 1
若 n & 1 = 0 ,那么 n 二进制最右位为 0
class Solution {
public:
int hammingWeight(int n) {
int res = 0; // c++ 使用无符号数
while (n != 0) {
res += (n & 1);//若 n & 1 = 1 ,那么 n 二进制最右位为 1; 若 n & 1 = 0 ,那么 n 二进制最右位为 0
n = n >> 1;//n的二进制右移一位
}
return res;
}
};
法三:利用 n & (n-1)
class Solution {
public:
int hammingWeight(int n) {
int res = 0;
while (n != 0) {
n &= n - 1;
res++;
}
return res;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理