码迷,mamicode.com
首页 > 编程语言 > 详细

python二进制转换

时间:2019-03-01 15:37:23      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:back   col   return   number   class   int   write   bin   code   

题目描述:

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

分析:

python没有unsigned int类型

>>> print ("%x" % 0xFFFFFFFF)
ffffffff
>>> print ("%x" % -10)
-a
>>> print ("%x" % -0xFFFFFFFF)
-ffffffff

解答:

【方法一】

class Solution:
    def NumberOf1(self, n):
        # write code here
        if n==0:
            return 0
        if n<0:
            n=n&0xffffffff                  #这里把负数变成整数
        return bin(n)[2:].count("1")

【方法二】

 class Solution:
    def NumberOf1(self, n):
        # write code here
        if n==0:
            return 0
        c=0
        if n<0:
            n=n&0xffffffff
        while n:
            n=n&(n-1)               #n & (n - 1)消去n最后一位的1.消了几次就是n中有几个1.
            c+=1
        return c

 

python二进制转换

标签:back   col   return   number   class   int   write   bin   code   

原文地址:https://www.cnblogs.com/girl1314/p/10456601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!