位运算1
func hammingWeight(num uint32) int {
t := 0
for num > 0{
num = num &(num-1) // 我在理论知识那里说了 num & (num -1) 就是取消掉最后一位的1 当然 num & (-num) 为了得到最后一位的1的位置。
t++
}
return t
}
位运算2
func hammingWeight(num uint32) int {
count := 0
for num > 0 {
if num & 1 == 1 {
count++
}
num = num >>1
}
return count
}
这种方式的原理是 看最后一位是不是1 是的话++ 不是就continue 然后看了一次后 整体 向右移 这样的话就可以每次都看最后一位 而且还能把数据都看完。不过 后面的这种岁月也是o(1) 32位的嘛,但是 上面的那种 可以不用移动 32次,应该还是更快的。