您的位置:首页 > 其它

LintCode-365.二进制中有多少个1

2017-05-04 13:37 260 查看

二进制中有多少个1


计算在一个 32 位的整数的二进制表式中有多少个 1.

样例

给定 32 (100000),返回 1

给定 5 (101),返回 2

给定 1023 (111111111),返回 9

挑战

If the integer is n bits with m 1 bits. Can you do it in O(m) time?

标签

二进制 比特位操作


code

class Solution {
public:
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
int countOnes(int num) {
// write your code here
int num_bit[32]={0};
int one_count = 0;
int i,num2 = num;
//  负数转正,符号位变1
if(num < 0) {
num = num * -1;
num_bit[31] = 1;
}
//  十进制转二进制
for(i=0; num; i++) {
num_bit[i] = num%2;
num /= 2;
}
//  负数原码转补码
if(num2 < 0) {
for(i=30; i>=0; i--) {
if(num_bit[i] == 1)
break;
num_bit[i] = 1;
}
}
for(i=0; i<32; i++) {
if(num_bit[i] == 1)
one_count++;
}
return one_count;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: