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.

  • 相关阅读:
    [ZJOI2010] 数字计数
    [USACO] 2004 Open MooFest 奶牛集会
    数星星
    [SCOI2011] 糖果
    西瓜种植
    [NOI2018] 归程
    [APIO2012] 派遣
    小K的农场
    妮可妮可妮 [Hash]
    [ZJOI2012] 灾难
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6443360.html
Copyright © 2011-2022 走看看