📅  最后修改于: 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