输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

题目:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

拙见:

用到了一点逻辑运算的小技巧,正数很好解决,负数不能直接用正数的方法解决,负数的补码中1的个数等于整数长度减去补码中0的个数,那么把负数取反,原负数中0的个数就等于取反后数中的1的个数,这是就和整数采用一样的方法了。

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count = 0
        if n < 0:
            n = ~n
            while n:
                n = n&(n-1)
                count += 1
            return 32-count
        else:
            while n:
                n = n&(n-1)
                count += 1
            return count
posted @ 2019-05-11 13:55  长安223  阅读(239)  评论(0编辑  收藏  举报