二进制中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

相关推荐

2025-12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
2025-12-22 16:31
已编辑
桂林电子科技大学 Python
很奥的前端仔:如果你接了offer 临时又说不去 hr确实要多做一些工作。 当然如果是接offer之前当我没说
点赞 评论 收藏
分享
牛客98820962...:个人意见,我觉得实习和项目经历要一致,达美乐感觉没必要写
点赞 评论 收藏
分享
评论
22
1
分享

创作者周榜

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