Skip to content

Latest commit

 

History

History
30 lines (27 loc) · 845 Bytes

191.md

File metadata and controls

30 lines (27 loc) · 845 Bytes

number-of-1-bits

解法一

位运算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次,应该还是更快的。