15二进制中1的个数

作者: gantrol | 来源:发表于2019-01-17 14:09 被阅读0次

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如:把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。

"""
1. python 整数存取的时候没有位数限制。首先判断n是不是负数,当n为负数的时候,
直接用后面的while循环会导致死循环(因为负数左移最高位补1)
    或者这样解释:Python的数值类型不会出现溢出的情况,所以需要对边界值进行限定。

2. 
"""

def numberOfOne(n):
    """假设输入为整数,范围在-2^32~2^32之间"""
    # print(bin(n))
    count = 0
    if n < 0:
        n = n & 0xffffffff
    while n:
        count += 1
        n = (n - 1) & n
    return count
    

def numberOf1(n):
    """一个看起来酷炫、也确实能用,但实测比前面要慢的东西。"""
    # lyst = [(n>>i & 1) for i in range(0,32)]
    # print(bin(n))
    # print(lyst)
    # return sum(lyst)
    return sum([(n>>i & 1) for i in range(0,32)])

if __name__ == '__main__':
    print(numberOfOne(0))
    print(numberOfOne(3))
    print(numberOfOne(0x7FFFFFFF))
    print(numberOfOne(0x80000000))
    print(numberOfOne(0xFFFFFFFF))

相关文章

  • 二进制中1的个数

    《剑指offer》面试题15:二进制中1的个数 题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表...

  • 15:二进制中1 的个数

    题目15:二进制中1 的个数 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 举例说明 例如,把9表...

  • 《剑指 Offer (第 2 版)》第 15 题:二进制中 1

    第 15 题:二进制中 的个数 传送门:二进制中 的个数,牛客网 online judge 地址。 输入一个 ...

  • 15二进制中1的个数

    请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如:把9表示成二进制是1001,有2位是1。因此如果...

  • 四种方式统计「二进制表示中 1 的个数」

    题目描述 这是 LeetCode 上的 剑指 Offer 15. 二进制中1的个数[https://leetcod...

  • 位运算和数学

    pow(x,n) 二进制中1的个数 n = 5(0101)时,返回2,n = 15(1111)时,返回4 1-n中...

  • 15_二进制中1的个数

    要求:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:把1的二进制数每次往左移一位, 位运算...

  • 15-二进制中1的个数

    请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位...

  • 15.二进制中1的个数

    思路:这道题要注意一个细节,右移的话并不好判断最高位是什么(逻辑右移还是算术右移?)因此最保险的做法是对1进行左移...

  • LeetCode 每日一题 [48] 二进制中1的个数

    LeetCode 二进制中1的个数 [简单] 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如...

网友评论

    本文标题:15二进制中1的个数

    本文链接:https://www.haomeiwen.com/subject/gslidqtx.html