一、请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
例:9的二进制表示为100,有2位是1。
import java.util.Scanner;
public class 题3_二进制中1的个数 {
static int N;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
System.out.println("转换为二进制为:" + Integer.toString(N, 2));
f1();// 方法1
f2();// 方法2
f3();// 方法3
}
private static void f1() {
int count = 0;
// 比对每一位
for (int i = 0; i < 32; i++) {
if ((N & (1 << i)) == (1 << i)) {
count++;
}
}
System.out.println(count);
}
private static void f2() {
int count = 0;
for (int i = 0; i < 32; i++) {
if (((N >>> i) & 1) == 1)
count++;
}
System.out.println(count);
}
private static void f3() {
int count = 0;
while (N != 0) {
N = ((N - 1) & N);
count++;
}
System.out.println(count);
}
}