思路一:
使用Python bin()函数转换为二进制,调用.count(‘1’)得出“1”的个数,注意负数要与上0xffffffff变为补码
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
return bin(n & 0xffffffff).count('1')
思路二:
将n和1做与运算,判断最低为是否为1,然后将1左移一位得到2,再和n做与运算,判断次低位是否为1
思路三:
把一个整数减去一,再和原来的整数做与运算,会把该整数最右边的1变成0
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
count = 0
if n < 0:
n = n & 0xffffffff # 得到一个正数,这个正数的补码和原来负数的形式一样
while n:
count += 1
n = n & (n - 1)
return count