zoukankan      html  css  js  c++  java
  • 二进制中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
    

      

  • 相关阅读:
    access 连接数据库
    Debug 和 Release 的区别
    Centos
    打印画面
    读取文件夹以及消除
    常用的文件文件夹目录的操作函数
    db的操作
    从数据库取数据
    pdf文件的作成
    读取文件
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/10432978.html
Copyright © 2011-2022 走看看