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

    题目:

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
    

    拙见:

    用到了一点逻辑运算的小技巧,正数很好解决,负数不能直接用正数的方法解决,负数的补码中1的个数等于整数长度减去补码中0的个数,那么把负数取反,原负数中0的个数就等于取反后数中的1的个数,这是就和整数采用一样的方法了。

    # -*- coding:utf-8 -*-
    class Solution:
        def NumberOf1(self, n):
            # write code here
            count = 0
            if n < 0:
                n = ~n
                while n:
                    n = n&(n-1)
                    count += 1
                return 32-count
            else:
                while n:
                    n = n&(n-1)
                    count += 1
                return count
    
  • 相关阅读:
    子矩阵
    [Ahoi2008]Meet 紧急集合
    立体图
    CF933B A Determined Cleanup
    CF746G New Roads
    树的重量
    CF519E A and B and Lecture Rooms
    矩阵
    深入浅出乘法逆元
    20180519模拟赛T2——pretty
  • 原文地址:https://www.cnblogs.com/ChangAn223/p/10848478.html
Copyright © 2011-2022 走看看