输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
#return sum([(n>>i & 1) for i in range(0,32)])
count = 0
if n<0:
n = n&0xffffffff#消除补码的影响
while(n):
count += 1
n = (n-1)&n
return count
"""
num1 = []
if(n==-1):
return 32
elif(n<-1):
n = ~n + 1
while(n):
num1.append(n % 2)
n = int(n / 2)
return num1.count(1)#位运算效率远大于除法效率,尽可能使用位运算
"""