Leetcode Link: 191. 位1的个数 - 力扣(LeetCode) 剑指 Offer 15. 二进制中1的个数 - 力扣(LeetCode)

题目

解法一

思路: 参考函数Python-bin()

注意从第2位开始才是真正的二进制起点。

题解

class Solution:
    def hammingWeight(self, n: int) -> int:
        s = bin(n)
        return s.count('1')

解法二

思路:采用位运算的方法,每次判断最低位有没有1,然后右移一位直至不能右移为止

注意本题的循环跳出条件

题解

class Solution:
    def hammingWeight(self, n: int) -> int:
        res = 0
        while(n!=0):  # 注意跳出的条件
            res += n & 1
            n = n >> 1
            # n >>= 1 也行,类似 n += 1
        return res

启发和联系