题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路:当 n < 0 时,n = n & 0xffffffff。然后将n右移并不断将最低位加入到结果中。负数要做按位与操作是因为负数右移最高位一直补1,因此需要一个与操作将其变换为1的个数相同的正数。
Python代码如下:
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
result = 0
if n < 0:
n = n & 0xffffffff
while n:
result += (n & 1)
n >>= 1
return result