1. 题目描述
输入一个整数,输出该数二进制表示中 1 的个数。
2. 解题思路
如果对负数直接右移,会导致最高位一直补1,最终变成0xFFFF死循环。
常规做法:
3. 代码实现
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
unsigned int flag = 1;
while (flag) {
if (n & flag) count++;
flag = flag << 1;
}
return count;
}
};
int main()
{
Solution test;
int result = test.NumberOf1(10);
std::cout << "mian result:" << result << std::endl;
return 0;
}