这道题主要利用了逻辑运算符中的与运算,因为要遍历字符串,因此还要用到左移运算符
因为二进制中的数字与1做与运算的时候,只有1最后的结果是1,由此可以统计出1的个数
左移运算符:二进制数字整体左移,高位舍去,低位补0
右移运算符:二进制数字整体右移,高位补1,低位舍去
class Solution {
public:
int hammingWeight(uint32_t n) {
// 通过与运算判断1的个数
int count = 0;
for(int i = 0;i < 32;i++)
{
// 1 左移i位
// n与上0的时候返回0 与上1时候返回1
if(n &(1 << i))
{
count++;
}
}
return count;
}
};