[编程题] lc 191. 位1的个数
题目
输入输出
Java代码
理解:这个题输入给的是2进制
//方法2:输入是二进制数的
public int hammingWeight(int n) {
int count=0;
while(n!=0){
n = n&(n-1); //这里的原理主要是n-1与上n每次会消除数n中的一个1,当n等于0了就消除完了
count++;
}
return count;
}
解释:n = n&(n-1); 这句
这里的原理主要是n-1与上n每次会消除数n中的一个1,当n等于0了就消除完了。
如果本题是把一个整型的十进制数计算其中二进制的1个个数。如下
方法:求模取余
//方法1:化为二进制的过程中计数(化二进制规则:模2取余);//这种输入是一个整形十进制.题目是给的二进制,不符合
public int hammingWeight1(int n) {
int count=0;
while(n/2!=0){
int m = n%2;
if(m==1){count++;}
n = n/2;
}
if(n%2==1){
return count+1;
}else{
return count;
}
}
输出: