15.位运算

2019-12-24  本文已影响0人  带带吴腾跃

题目:输入一个32位整数,输出该数二进制表示中1的个数。
注意:负数在计算机中用其绝对值的补码来表示。

求补码的方法:

位运算:

其他补充:

根据以上信息,本题思路,先把有符号整数转换成无符号整数,不然会产生死循环,然后与1做&运算,统计个数。

class Solution {
public:
    int NumberOf1(int n) {
        unsigned int _n = n;
        int count = 0;
        while (_n)
        {
            if (_n & 1 == 1) count += 1;
            _n >>= 1;
        }
        return count;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读