您的位置:首页 > 其它

二进制中有多少个1

2015-11-05 20:41 183 查看

问题:

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

样例:

给定 32 (100000),返回 1。

给定 5 (101),返回 2。

给定 1023 (111111111),返回 9。

分析:

1、需要考虑是负数的情况,如果是负数,则二进制的第一位为1,首先需要处理这个1,即:num^0x80000000
2、然后计算剩下的1,依次检查该数转化为二进制时的每一位。即每次与1相&,并检测是否为1,然后将该数向右移动一位。

代码:

class Solution {
public:
int countOnes(int num) {
int count = 0;

if (num < 0) {
count++;
num = num ^ 0x80000000;
}

while (num > 0) {
if (num & 1) {
count++;
}
num = num >> 1;
}

return count;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LintCode