[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号