题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
牛客网:链接
与:二者都为1才为1,别的都是0!
思路1:可以直接用1和n做与操作,然后将n向右一位,右移一定要赋值!n = n >> 1!
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
if n < 0:
n = n & 0xffffffff
count = 0
while n:
if 1 & n == 1:
count += 1
n = n >> 1
return count
思路2:
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
if n<0:
n = n & 0xffffffff
count = 0
while n:
n = n & (n-1)
count += 1
return count
if __name__ == '__main__':
a = Solution()
print(a.NumberOf1(-5))