题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
注意事项:
首先需要判断n是不是负数,当n为负数的时候,直接用while循环判断会导致死循环,因为负数向左移位的话最高位补1
。
一个int为8位,所以负数的情况中需要判断32个字节中1的个数。
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
res = 0
for i in range(32):
if n>>i & 1 == 1:
res += 1
return res