1. 题目
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。例如,9表示成二进制是1001, 有2位1。因此,如果输入9,则该函数输出2。
2. 解题思路
因为涉及到了二进制,所以使用位运算
详细思路移步 leetcode 面试题15. 二进制中 1 的个数(位运算,清晰图解)
3. 代码实现
3.1
class Solution:
def hammingWeight(self, n):
"""
"""
count = 0
while n:
count += 1
n = (n-1) & n
return count
4. 总结
num & 1的结果是,奇数为1偶数为0。
5. 参考文献
[1] 剑指offer丛书