输入一个整数,求该整数的二进制表示中1的个数。
public class CountOneTimes {
public int ExtractRightOne(int a){
int a_r1 = a & ((~a) +1); //提取最右侧的1
return a_r1;
}
public int countonetimes(int a){
TenToTwo(a);
int count = 0;
while(a != 0){
int a_r1 = ExtractRightOne(a);
count ++;
a = a ^ a_r1;
}
return count;
}
public void TenToTwo(int a){
// 十进制转化为二进制
int quotients = a;
int remainders = 1;
String str = "";
//商和余数: quotients and remainders
while(quotients != 0){
remainders = quotients % 2;
quotients = quotients / 2;
str = remainders + str;
}
System.out.println(a + "的二进制为:" + str);
}
public static void main(String[] args) {
int a = 19;
CountOneTimes countOneTimes = new CountOneTimes();
int count = countOneTimes.countonetimes(a);
System.out.println(a + "的二进制中1的个数为:" + count);
}
}
输出
19的二进制为:10011
19的二进制中1的个数为:3