Python进制转化

看来不管是我写成了几行,别人总是能一行出结果~~

给定一个正整数,输出它的补码数。 补充策略是翻转其二进制表示的位。

注意:
给定的整数保证适合在32位有符号整数的范围内。

您可以在整数的二进制表示中不要假定前导零位。

Input: 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.

我的

class Solution:
    
    # 十进制转化成二进制
    def dec2bin(num):
        l=[]
        # 负数时进行递归
        if num < 0:
            return '-' + dec2bin(abs(num)) # abs(num) abs()、int()等等进行类型的转化
        while True:
            # divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
            num, remainder = divmod(num, 2) #如果是10进制转化成其他进制,将2换成相应数字即可 
            l.append(str(remainder))
            if num == 0:
                print( ''.join(l[::-1])) # .join将单个的字符连成字符串
                return ''.join(l[::-1])
            
    def findComplement(self, num):
        """
        :type num: int
        :rtype: int
        """
        l2=[]
        bin_num=Solution.dec2bin(num)
        
        # 按位取反
        for i in range(len(bin_num)):
            if(bin_num[i]=='0'):
                l2.append(str(1))
            else :
                l2.append(str(0))
                
        l2=''.join(l2[::1])
        print(l2)
        
        # 转化成十进制
        # int()第一个参数是字符串 '0Xff' ,第二个参数是说明,这个字符串是几进制的数。  转化的结果是一个十进制数。
        return int(l2,2) 

a=5
b=Solution.findComplement(a,a)
print(b)

别人的

def findComplement(self, num):
        return num ^ ((1 << len(bin(num)) - 2) - 1)
列表: []
Python的列表对象是这个语言提供的最通用的序列。列表是一个任意类型的对象的位置相关的有序集合,他没有固定的大小。不像字符串,其大小是可变的,通过对偏移量进行复制以及其他各种列表的方法进行调用,确实能够修改列表的大小。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值