Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
思路:
使用n与0xffffffff 相与得到unsigned的数值,然后使用bin()方法得到二进制表达,然后使用count方法,得到1的个数。
思路二:
使用n&(n-1), 对于一个数的二进制表达 n = XXXXXX1000, n - 1 is XXXXXX0111。n & (n - 1) will be XXXXXX0000 which is just cancel the last 1
class Solution(object):
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
n = n & 0xffffffff
return bin(n).count("1")
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
c = 0
while n:
n &= n - 1
c += 1
return c