求int型正整数在内存中存储时1的个数
描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 这个数转换成2进制后,输出1的个数
解题
Solution
/**
* 求数字二进制中1的个数
* 1,对2取余;2,位运算
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
solve2(num);
in.close();
}
private static void solve(int num) {
int count=0;
while (num!=0){
if (num%2==1) count++;//取二进制中的1
num/=2;
}
System.out.println(count);
}
private static void solve2(int num) {
int count=0;
while (num!=0){
count++;
num = num&(num-1);//位运算 有多少1能进行多少次,1100&1011=1000
}
System.out.println(count);
}
}