计算在一个 32 位的整数的二进制表式中有多少个 1
。
样例:
给定 32
(100000),返回 1
给定 5
(101),返回 2
给定 1023
(111111111),返回 9
class Solution {
public:
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
int countOnes(int num) {
// write your code here
if(num == 0)
return 0;
int result =0;
if(num>0){
while(num!=0){
if(num%2==1)
result++;
num = num/2;
}
}
if(num<0){
num = num + 2147483648;//把负数转换成正数,主要算出结果后加1。
while(num!=0){
if(num%2==1)
result++;
num = num/2;
}
result++;
}
return result;
}
};