输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
题目:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
拙见:
用到了一点逻辑运算的小技巧,正数很好解决,负数不能直接用正数的方法解决,负数的补码中1的个数等于整数长度减去补码中0的个数,那么把负数取反,原负数中0的个数就等于取反后数中的1的个数,这是就和整数采用一样的方法了。
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
count = 0
if n < 0:
n = ~n
while n:
n = n&(n-1)
count += 1
return 32-count
else:
while n:
n = n&(n-1)
count += 1
return count