二进制中1的个数

二进制中1的个数

http://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8

二进制计算

显然,一个很简单的思路是一个一个数

class Solution:
    def NumberOf1(self, n):
        # write code here
        if n<0:
            n=n&0xffffffff
        return bin(n).count("1")

位与

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路很巧妙,可参考牛客二进制中1的个数讨论

class Solution:
    def NumberOf1(self, n):
        # write code here
        count=0
        if n < 0:
            n = n & 0xffffffff
        while n!=0:
            n=n&(n-1)
            count+=1
        return count

注意,使用java或者c++写时不需if判断,因为他两默认转的就是补码形式
在这里插入图片描述
而python不是,需要与0xffffffff位与才能变成补码形式
在这里插入图片描述

全部评论
32位整数
点赞 回复 分享
发布于 2020-07-02 19:17
请问为什么是8个f不是12个f
点赞 回复 分享
发布于 2019-10-29 20:55

相关推荐

04-12 13:42
江南大学 C++
点赞 评论 收藏
分享
评论
22
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务