给出一个整数,求出它的二进制形式中1的个数。通常情况下我们可以采用多种方法来求解。
方法一:将整数转换为二进制形式,然后,遍历二进制数字,找出其中1的个数。
int count = 0;
int x = 2015;
String binStr = Integer.toBinaryString(x);
for(int i=0; i<binStr.length(); i++){
if(binStr.charAt(i) == '1'){
count++;
}
}
System.out.println(count);
方法二:将十进制数字转换为二进制形式,然后循环右移并和1做与运算统计1的个数。
int count = 0;
int x = 2015;
//统计数字中1的个数-----方法一
String binStr = Integer.toBinaryString(x);
for(int i=binStr.length(); i>=0; i--){
int digit = (x>>i)&1;
if(digit == 1){
count++;
}
}
System.out.println(count);
方法三:通过x和(x-1)的与运算来统计x中的1的个数
int count = 0;
int x = 2015;
while (x!=0) {
count++;
//下面的输出是为了便于查看
System.out.println(x+","+Integer.toBinaryString(x));
x=x&(x-1);
}
System.out.println("原来x中的1的个数为:"+count);
这三种情况都能统计一个十进制数字变成二进制后包含的1的个数。