二进制中1的个数 (位运算)

题目:https://www.acwing.com/problem/content/description/25/
输入一个 32 位整数,输出该数二进制表示中 1 的个数。
注意:
负数在计算机中用其绝对值的补码来表示。

样例1

输入:9
输出:2
解释:9的二进制表示是1001,一共有2个1。

样例2

输入:-2
输出:31
解释:-2在计算机里会被表示成11111111111111111111111111111110,
一共有31个1。

代码

class Solution {
public:
    int NumberOf1(int n) {
        int r=0;
        unsigned int un=n;
        while(un)
        {
            r+=un&1;
            un>>=1;
        }
        return r;
    }
};
posted @ 2021-04-16 17:27  斯文~  阅读(51)  评论(0)    收藏  举报

你好!