题目描述
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
解题思路
- 每次将该数二进制的最后一位1置为0,然后统计结果加一
- 直到该数的所有1位全被置为0,返回
- n&(n-1)可以将最后一位置0(下图来自leetcode)
代码实现
func hammingWeight(num uint32) int {
res := 0
for num != 0 {
// 将最后一位1置为0
num = num&(num-1)
res++
}
return res
}