问题:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
解法一:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
System.out.println(Integer.toString(N,2));
int count=0;
for(int i=0;i<32;i++){
if((N&(1<<i))==(1<<i)){
count++;
}
}
System.out.println(count);
}
解法二:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
System.out.println(Integer.toString(N,2));
int count=0;
for(int i=0;i<32;i++){
if(((N>>>i)&1)==1){
count++;
}
}
System.out.println(count);
}
解法三
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
System.out.println(Integer.toString(N,2));
int count=0;
while(N!=0){
N=((N-1)&N);
count++;
}
System.out.println(count);
}