|
发表于 2018-6-24 18:00:44
|
显示全部楼层
尝试用python写了下十进制与二进制互相转换的程序:
十进制转二进制:
'''
功能为把十进制数转换为二进制数。
已完工。
作者:Spring Rain
'''
def go(start):
is_negative = False
is_first_1 = False
result = ""
process = []
num = int(start)
if num < 0: # 判断是否为负
is_negative = True
else:
result += "0"
num = int(start.replace("-", ""))
calculation_result = num
remainder = 0
while calculation_result >= 1: # 计算出二进制反序排列
remainder = calculation_result % 2
if remainder > 0:
process.append("1")
else:
process.append("0")
calculation_result = calculation_result // 2
the_len_of_calculation_result = len(process)
for i in range(1, len(process) + 1): # 将反序二进制转成正序二进制,并通过是否为负数进行第一位的控制
true_i = the_len_of_calculation_result - i
now = process[true_i]
if now == "0" and is_negative and is_first_1 == False:
continue
elif is_negative:
is_first_1 = True
result += now
return result
if __name__ == "__main__":
start = input("请输入十进制数:")
result = go(start)
print(result)
二进制转十进制:
'''
功能为把二进制数转换为十进制数。
已完工。
作者:Spring Rain
'''
def go(num):
the_len = len(num)
result = ""
process = 0
for i in range(0, the_len): # 进行转换计算,即十进制数 == 依次将每个二进制位的值 * 2的位权次方再相加
now = int(num[i])
go = 2 ** (the_len-1-i)
process += now * go
if num[0] == "1": # 检测符号位,1则为负,0则为正
result = "-" + str(process)
else:
result = str(process)
return result
if __name__ == "__main__":
start = input("请输入二进制数:") # get二进制数
result = go(start) # 调用函数
print("结果是", result)
|
|