您的位置:首页 > 编程语言 > Python开发

Python进制转化

2018-01-10 18:10 274 查看
看来不管是我写成了几行,别人总是能一行出结果~~

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

注意:

给定的整数保证适合在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的列表对象是这个语言提供的最通用的序列。列表是一个任意类型的对象的位置相关的有序集合,他没有固定的大小。不像字符串,其大小是可变的,通过对偏移量进行复制以及其他各种列表的方法进行调用,确实能够修改列表的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: