方法一:移动该数
import java.util.Scanner;
//计算9对应的二进制1001的1的个数
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int n , t = 1 , ct = 0;
n = sca.nextInt();
// 方法一
while(n != 0) {
if((n & 1) == 1) {
ct ++;
}
n = n >>> 1;
}
System.out.println(ct);
}
}
方法二:移动1
import java.util.Scanner;
//计算9对应的二进制1001的1的个数
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int n , t = 1 , ct = 0;
n = sca.nextInt();
while(t < n * 4) {
if((t & n) != 0) {
ct ++;
}
t = t << 1;
}
System.out.println(ct);
}
}
方法三:将该数一个个去除
注意查找,n 与 n - 1 相与的规律。
import java.util.Scanner;
//计算9对应的二进制1001的1的个数
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int n , t = 1 , ct = 0;
n = sca.nextInt();
while(n != 0) {
ct ++;
n = (n - 1) & n;
}
System.out.println(ct);
}
}