方法1:适用于正整数
public static void NumberOf1(int num){
int n = num;
int count = 0;
while(num != 0){
if(num%2 == 1){
count++;
}
num = num/2;
}
System.out.println(n+"存储在内存中的二进制中1的个数:"+count);
}
方法2:循环次数过多
public static void NumberOf1(int num){
int n = num;
int count = 0;
for(int i=0; i<32; i++){
if(((num>>i)&1)==1){
count++;
}
}
System.out.println(n+"存储在内存中的二进制中1的个数:"+count);
}
方法3:优化
public static void NumberOf1(int num){
int n = num;
int count = 0;
while(num != 0){
count++;
num=num&(num-1);
}
System.out.println(n+"存储在内存中的二进制中1的个数:"+count);
}
方法4:使用Integer.toBinaryString(int n)方法
public static void NumberOf1(int num){
int n = num;
int count = 0;
char[] c = Integer.toBinaryString(num).toCharArray();
for(int i=0; i<c.length; i++){
if(c[i] == '1'){
count++;
}
}
System.out.println(n+"存储在内存中的二进制中1的个数:"+count);
}