二进制中1的个数
题2:二进制中1的个数
请实现一个函数,输入一个整数输出该数二进制表示中的一的个数。
例:9的二进制表示1001,有2位是1
import java.util.Scanner;
public class A_002 {
/*
* 题2:二进制中1的个数
* 请实现一个函数,输入一个整数输出该数二进制表示中的一的个数。
* 例:9的二进制表示1001,有2位是1
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Counting1(N);
Counting2(N);
Counting3(N);
}
public static void Counting1(int x){
int count = 0;
for (int i = 0; i < 32; i++) {
if((x & (1 << i)) == (1 << i)){
count++;
}
}
System.out.println(count);
}
public static void Counting2(int x){
int count = 0;
for (int i = 0; i < 32; i++) {
if(((x >> i) & 1) == 1){
count++;
}
}
System.out.println(count);
}
/*重点
* x = x & (x -1);
* 例如 9 & (9 - 1)
* 1001 & 1000 = 1000 //消除一位
* 1000 & 0111 = 0000 //再次消除一位
*/
public static void Counting3(int x){
int count = 0;
while(x != 0){
x = x & (x -1); //消除一位
count++; //计数加一
}
System.out.println(count);
}
}