自己写的两个,一个是根据补码的特点,一个是使用python强大的库函数,哇,python是真的简单。
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
count = 0
if n < 0:
n = n + 2 ** 32
while n:
if n % 2 == 1:
count += 1
n /= 2
return count
def NumberOf2(self, n):
return list(bin(n if n >= 0 else n + 2 ** 32)).count('1')
S = Solution()
print S.NumberOf1(-2147483648)
print S.NumberOf1(-1)
print S.NumberOf1(-5)
print S.NumberOf1(10)
print S.NumberOf1(0)
print S.NumberOf2(-2147483648)
print S.NumberOf2(-1)
print S.NumberOf2(-5)
print S.NumberOf2(10)
print S.NumberOf2(0)