题目描述
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。
方法一:位运算
解题思路
- 遍历,右移,如果最后一位是1,计数加一
代码实现
func hammingWeight(num uint32) int {
res := 0
for i := 0; i <= 32; i++ {
if (num&1) == 1 {
res++
}
num >>= 1
}
return res
}
方法二:消除1
解题思路
- n&(n-1)可以消除最后一个1
代码实现
func hammingWeight(num uint32) int {
res := 0
for num != 0 {
num &= num-1
res++
}
return res
}