赞
踩
输入一个整数,输出该数二进制表示中 1 的个数。
如果对负数直接右移,会导致最高位一直补1,最终变成0xFFFF死循环。
常规做法:
- #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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。