一、题目:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
二、解题思路:
循环遍历整个32位,如果是奇数,计数器+1,偶数计数器不变,返回计数器的大小。
三、代码和结果:
class Solution {
public:
int hammingWeight(uint32_t n) {
int sum =0;
for(int i = 0;i<32;i++){
if(n & 1) ++sum; //这里 n&1 就是—bai—判断n是否为奇数
/*
因为n为奇数时,对应的dao二进制数最低位zhuan一定为1,n&1的结果就是1
n为偶shu数时,相应的最低位为0,n&1的结果就是0,
这里也可以写 n&1 ==1 或者写 n%2 == 1 或者写 n%2
*/
n >>= 1;//n>>=1 等价于 n=n>>1;都是移位运算符,表示n向右移一位后赋给n
}
return sum;
}
};
结果:
至此,完美解决,over~