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;
}