概述
Leetcode 191
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数
在这里我会介绍好解法,供大家参考一下
除2取余数的方法
// 这种方法会出现 超出时间限制
public int hammingWeight(int n) {
int cnt = 0;
while (n !=0) {
cnt += n % 2; // 如果对2取余数,余数为1说明,最右侧是1,否则是0
n >>= 1; // 右移动一位
}
return cnt;
}
直接判断最低位的数是否为1
public int hammingWeight(int n) {
int cnt = 0;
while (n != 0) {
cnt += n&1;
n >>=1;
}
return cnt;
}
使用异或的方式,这是效率最高的一种方式(击败100%的用户)
public int hammingWeight(int n) {
int cnt = 0;
while(n != 0) {
int rightOne = n & (~n + 1);
cnt++;
n ^= rightOne;
}
return cnt;
}
最后
以上就是霸气天空为你收集整理的统计二进制数中1的个数方法(余数法,位移法,异或法)的全部内容,希望文章能够帮你解决统计二进制数中1的个数方法(余数法,位移法,异或法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复