二进制中1的个数

0

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:每次循环统计二进制中最后一个1,再把这个1去掉
num&(num-1)这个操作,可以 ,每次都把当前统计的1去掉,直到原数字变成0

#include<iostream>
using namespace std; 
class Solution {
public:
      int  NumberOf1(int n) {
        int count = 0;
        while (n) {
            ++count;
            n = (n - 1)&n;
        }
        return count;
    }
};
int main(){
    Solution s;
    cout<<s.NumberOf1(-2)<<endl;
    return 0;
}

你可能感兴趣的

载入中...