首先要想到的是,将十进制全部转换成二进制后,开始统计1的个数,解法1为:将该二进制数转化为字符串,然后对该字符串进行遍历,如果等于1,计数器+1;
但是注意此处转换二进制时,正数可以直用bin(),oct(),int(). hex()
- 如果是正整数,直接转换成二进制即可;
- 如果是负整数,需求出该数对应的补码,以便后期解题; 用一个n = n & 0xffffffff 的与操作实现
class Solution:
def NumberOf1(self, n):
# write code here
if n < 0:
n = n & 0xffffffff#按位与运算求一个负数的补码
j = 0
res = bin(n)[2:]#去除前两位"ob"
for i in res:
if i == "1":
j += 1
return j