📜  十进制到二进制转换程序(1)

📅  最后修改于: 2023-12-03 15:22:48.316000             🧑  作者: Mango

十进制到二进制转换程序

本文介绍一种将十进制数字转换为二进制的程序,供程序员参考使用。

程序思路

将十进制数字不断除以2,保留余数,直到商为0为止,然后逆序排列余数即可得到二进制表示。

程序实现
def decimal_to_binary(decimal_num):
    """
    将十进制数字转换为二进制
    :param decimal_num: 十进制数字
    :return: 二进制数字
    """
    binary_list = []
    while decimal_num != 0:
        remainder = decimal_num % 2
        binary_list.append(str(remainder))
        decimal_num //= 2
    binary_list.reverse()
    binary_num = "".join(binary_list)
    return binary_num

这段代码中,decimal_to_binary函数接收一个十进制数字作为参数,返回该数字的二进制表示。具体实现方式是将十进制数字不断除以2,按照计算顺序存储余数到binary_list列表中,然后反转列表中的元素,最后将元素合并成一个二进制字符串返回。

程序测试

在使用该程序前,我们需要先定义一些测试用例。

test_cases = [
    # 正常测试用例
    {"decimal_num": 0, "expected_binary_num": "0"},
    {"decimal_num": 1, "expected_binary_num": "1"},
    {"decimal_num": 2, "expected_binary_num": "10"},
    {"decimal_num": 3, "expected_binary_num": "11"},
    {"decimal_num": 4, "expected_binary_num": "100"},
    {"decimal_num": 10, "expected_binary_num": "1010"},
    {"decimal_num": 15, "expected_binary_num": "1111"},
    # 异常测试用例
    {"decimal_num": -1, "expected_binary_num": None},
    {"decimal_num": 1.1, "expected_binary_num": None},
    {"decimal_num": "a", "expected_binary_num": None}
]

接下来,我们可以使用如下代码测试程序在各个测试用例下的表现。

for test_case in test_cases:
    decimal_num = test_case["decimal_num"]
    expected_binary_num = test_case["expected_binary_num"]
    binary_num = decimal_to_binary(decimal_num)
    if binary_num == expected_binary_num:
        print(f"测试通过:decimal_num={decimal_num} -> binary_num={binary_num}")
    else:
        print(f"测试失败:decimal_num={decimal_num} -> expected={expected_binary_num}, actual={binary_num}")

测试结果应该如下所示:

测试通过:decimal_num=0 -> binary_num=0
测试通过:decimal_num=1 -> binary_num=1
测试通过:decimal_num=2 -> binary_num=10
测试通过:decimal_num=3 -> binary_num=11
测试通过:decimal_num=4 -> binary_num=100
测试通过:decimal_num=10 -> binary_num=1010
测试通过:decimal_num=15 -> binary_num=1111
测试失败:decimal_num=-1 -> expected=None, actual=None
测试失败:decimal_num=1.1 -> expected=None, actual=None
测试失败:decimal_num=a -> expected=None, actual=None