[AcWing 26] 二进制中1的个数

点击查看代码
class Solution {
public:
    int NumberOf1(int n) {
        unsigned un = n;
        int res = 0;
        while (un) {
            res += un & 1;
            un >>= 1;
        }
        return res;
    }
};
- 首先将 n 转化为无符号整数 un,因为有符号负数右移时会往高位补 1,而无符号整数右移时,高位补 0;
- 每次让 un & 1,得出来最后一位是否为 1,再把 un 右移一位;

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号