剑指offer-二进制中1的个数,负数用补码表示

来源:互联网 发布:编程错误error 编辑:程序博客网 时间:2024/06/03 22:37

自己写的两个,一个是根据补码的特点,一个是使用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)
阅读全文
0 0