这里主要是负数,我们可以使用bin这个函数。
bin()一个十进制的负数,返回二进制的原码,加个负号。bin一个整数是返回补码。bin一个十六进制的负数,返回二进制。所以为了得到十进制负数的补码,需要-3&十六进制oxfffffffd按位与操作。
a = bin(-3)
print(a) =====> -0b11
a = bin(3)
print(a) ====>0b11
b = bin(-3 & 0xffffffff)
print(b)=====>0b11111111111111111111111111111101
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
if n < 0:
n = n & 0xffffffff
binNum = bin(n)[2:]
arr = str(binNum)
res = 0
for ch in arr:
if int(ch) == 1:
res += 1
return res