leetcode 每日一题 2021.03.22
这个题考查的是位运算的知识,属于简单题。
这里先补充一下移位运算的相关知识点:
C++中
符号 << 代表左移,相当终于乘2
符号 >> 代表右移,相当于除以2
例如:
12>>1就是12 / 2
12>>3就是12 / 2^3(右移三位,除以三次2)
1<<15就是2^15,左移15位,1 * 15次2,即 2的15次方
再来看这个题:
求出一个二进制数中有多少个 1
我们都知道 1 & 1 = 1 0 & 1 = 0
因此只需要让这个二进制数n的每一位数,与 1 进行 & 运算就好
AC代码:
class Solution {
public:
int hammingWeight(uint32_t n) {
int cnt = 0;
for(int i = 0 ; i < 32; i++) {
if(n & (1 << i))
cnt++;
}
return cnt;
}
};