python 建立函数,输入二进制数字,输出二进制字符串
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 17 10:44:58 2018
@author: A3
"""
import numpy as np
class digit_conversion():
def __init__(self):
pass
def digit_2to10(self,data):
'''十进制输入,二进制输出'''
data_con = []
for i in range(len(data)):
data_i = int(data[i]) * (2 ** (len(data) - i - 1))
data_con.append(data_i)
return sum(data_con)
def digit_10to2(self,data):
'''二进制输入,十进制输出'''
data_con = []
while data >= 1:
p = 1 if data % 2 > 0 else 0
data_con.append(str(p))
data = int(data / 2)
return ''.join(data_con[::-1]) #或者用reverse
def derect_2to2_1(self,data1,data2):
'''第一种方法,二进制输入,二进制输出'''
n1,n2 = list(data1[::-1]),list(data2[::-1])
if len(data1) > len(data2):
for i in range(1,(len(data1) - len(data2) + 1)):
n2.append('0')
elif len(data1) < len(data2):
for i in range(1,(len(data2) - len(data1) + 1)):
n1.append('0')
data1,data2 = ''.join(n1),''.join(n2)
data_con = []
n = 0
for i in range(len(data1)):
data_i = 0 if (int(data1[i]) + int(data2[i]) + n) == 0 or (int(data1[i]) + int(data2[i]) + n) == 2 else 1
n = 1 if (int(data1[i]) + int(data2[i]) + n)> 1 else 0
data_con.append(str(data_i))
return ''.join(data_con[::-1])
def derect_2to2_2(self,data1,data2):
'''第二种方法,二进制输入,二进制输出'''
num = list(str(int(data1) + int(data2)))[::-1]
q = 0
box = []
for i in range(len(num)):
p = int(num[i])
p = 0 if p + q == 0 or p + q == 2 else 1
q = 1 if int(num[i]) + q > 1 else 0
box.append(str(p))
box = ''.join(box) + '1' if q == 1 else ''.join(box)
return box[::-1]
if __name__ == "__main__":
dc = digit_conversion()
result = dc.derect_2to2_2(input('please input a num:\n'),input('please input another num:\n'))
print('sum is: %s' % result)