zoukankan      html  css  js  c++  java
  • 编程练习:输入一个整除,输出该二进制表示中1的个数。负数用补码表示。

    这个题有点不太适合Python,因为python的变量是没有类型声明的。

    下面的代码值考虑正数情况:

     1 #!/usr/bin/env python3
     2 
     3 def count_1(num):
     4         count = 0
     5         while num != 0:
     6                 count += 1
     7                 print(count)
     8                 num = num & (num-1)
     9         return count
    10 
    11 if __name__ == "__main__":
    12         print(count_1(15))

    这里主要的代码就是  num = num & (num-1)

    例如: 12二进制表示为 1100,前面很多个0就省略了。

        12-1的二进制位 1011,12最右边的1开始的位和11对应的为是相反的。

        所以这样一与可以减去一个1.

        得到的结果为 1000,减一得到 0111. 两者相与后得到 0000.结束。

        得知该数字有两个1.

  • 相关阅读:
    ABP 番外篇-容器
    ABP 番外篇-菜单
    三、写服务
    十二、异步
    一、PHP_OSS使用
    十一、泛型
    Automapper
    ABP实践学习
    【2019-07-26】省是缺点
    【2019-07-25】女人,很强大
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6443360.html
Copyright © 2011-2022 走看看