| 
 | 
 
 
发表于 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) 
 |   
 
 
 
 |