Nowcoder java-二进制中1的个数
(题目来自牛客网)
思路
方法一:循环的次数等于二进制整数的位数,即左移1
方法二:循环的次数等于1的个数,即整数-1的结果和整数本身做位与运算,会将最右边的1变为0,它之后的数变为1,它之前数不改变,那么有几个1,就会做几次这样循环
代码
public class NumberOf1 {
//方法一:循环的次数等于二进制整数的位数,即左移1
// public int numberOf1(int n) {
// int count = 0;
// int falg = 1;
// while(falg !=0){
// if((n & falg) != 0){
// count++;
// }
// falg = falg << 1;
// }
// return count;
// }
//方法二:循环的次数等于1的个数,即整数-1的结果和整数本身做位与运算,会将最右边的1变为0,那么有几个1,就会做几次这样循环
public int numberOf1(int n) {
int count = 0;
while(n != 0){
++count;
n = (n-1) & n;
}
return count;
}
}