第一种方法:循环,按位与上每一位(效率低)
import java.util.Scanner;
public class TextOne {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 0; i < 32; i++) {
if (((n >> i) & 1) == 1) {
count++;
}
}
System.out.println("count:"+count);
}
}
第二种方法,按位与上(n-1),效率较高
import java.util.Scanner;
public class TextOne {
public static void main (String[]args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
while (n != 0) {
n = n & (n - 1);
count++;
}
System.out.println("count:"+count);
}
}



