利用Python打印有符号十进制数的二进制原码、反码、补码
有时候手动计算有符号十进制数的二进制原码、反码、补码是一件挺麻烦的事情。
下面是一个段Python 代码,它可以接收一个 16 位有符号十进制数的输入,然后输出其对应的二进制原码、反码和补码:
def decimal_to_binary(decimal_num):# 检查输入是否超出16位有符号整数范围if decimal_num < -32768 or decimal_num > 32767:print("输入的数字超出了16位有符号整数的范围。")return# 处理正数if decimal_num >= 0:binary_str = bin(decimal_num)[2:].zfill(16)original_code = binary_strone_complement = binary_strtwo_complement = binary_str# 处理负数else:# 计算原码abs_num = abs(decimal_num)binary_str = bin(abs_num)[2:].zfill(15)original_code = '1' + binary_str# 计算反码one_complement = '1' + ''.join('1' if bit == '0' else '0' for bit in binary_str)# 计算补码two_complement = bin(int(one_complement, 2) + 1)[2:].zfill(16)print(f"原码: {original_code}")print(f"反码: {one_complement}")print(f"补码: {two_complement}")# 获取用户输入
try:decimal_num = int(input("请输入一个16位有符号十进制数: "))decimal_to_binary(decimal_num)
except ValueError:print("输入无效,请输入一个有效的十进制数。")
此代码定义了一个名为decimal_to_binary的函数,它接收一个十进制数作为输入。函数会先检查输入的数字是否在 16 位有符号整数的范围内,接着针对正数和负数分别计算其原码、反码和补码,最后输出计算结果。在主程序里,会获取用户输入的十进制数,调用decimal_to_binary函数进行计算,并处理可能出现的输入错误。
运行结果: