二进制中有多少个1(JAVA)
计算在一个 32 位的整数的二进制表式中有多少个 1.
样例
给定 32 (100000),返回 1
给定 5 (101),返回 2
给定 1023 (111111111),返回 9
方法
1.利用除2求余的方法获取二进制位数,判断位数是否为1来统计位数。
2.如果为负数,则与2的32次方相加,变为正数(0与2的32次方的二进制相等),然后跟步骤1相同
代码
public class Solution {
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
public int countOnes(int num) {
// write your code here
int count = 0;
if(num < 0)
{
num = num + Integer.MAX_VALUE + 1;
while(num != 0){
if(num % 2 == 1)
count++;
num = num / 2;
}
count++;
}else if(num > 0){
while(num != 0)
{
if(num % 2 == 1)
count++;
num = num / 2;
}
}
return count;
}
};