题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
法1:使用Python内置的函数bin()将给定的整数转换为二进制形式,对应的二进制数为0b开头的形式,所以还需要将其替换为空字符串。然后,将二进制字符串转换为list,判断list中字符为'1'的个数即可。
class Solution:
def hammingWeight(self, n: int) -> int:
num = list(bin(n).replace('0b', ''))
print(num)
count = 0
for i in num:
if i == '1':
count +=1
return count
法2:使用于操作,如果二进制的某一位和1相与结果为1,说明该位为1,否则为0。同时使用左移操作不断的去掉已经比较过的位置,移位后高位补0。
class Solution:
def hammingWeight(self, n: int) -> int:
count = 0
for i in range(32):
if n & 1 == 1:
count += 1
n = n >> 1
return count