• 二进制中1的个数(python)


    题目描述

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
    # -*- coding:utf-8 -*-
    class Solution:
        def NumberOf1(self, n):
            # write code here
            '''
            int count=0
            while(n>0):
                count += 1
                n=n&(n-1)
            return count
            #思想错误
            '''
            #举例来说,6的二进制是 110 ,6-1=5的二进制是 101,
            #6&5=100, 如此操作之后6中原来的110变为100,循环计数统计1的个数,
            #直至n变为0为止。
            #但是内存中显示n的十进制值为-4294967296,满足 n!=0 的条件, 
            #循环会继续执行。在此之后的循环中,n的二进制表示一直显示为0b0, 
            #但内存中n的十进制数继续不断减少
            #int 为带符号类型,带符号类型最高为是符号位,又因为0xFFFFFFFF,
            #也就是四个字节32 bits全是1, 符号位是1,所以这个数是负数
            count = 0
            while n&0xffffffff != 0:
                count += 1
                n = n & (n-1)
            return count
    

      

  • 相关阅读:
    css3 实现水平或垂直布局
    css div 细边框
    css scroll bug
    F和弦大横按
    简单分析beyond作曲
    [编织消息框架][设计协议]优化long,int转换
    nginx 限制ip
    nginx注册成服务
    nginx 添加win 服务
    sqlserver 使用维护计划备份
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/10432978.html
Copyright © 2020-2023  润新知