利用Python打印有符号十进制数的二进制原码、反码、补码

发布于:2025-05-01 ⋅ 阅读:(21) ⋅ 点赞:(0)

有时候手动计算有符号十进制数的二进制原码、反码、补码是一件挺麻烦的事情。
下面是一个段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_str
        one_complement = binary_str
        two_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函数进行计算,并处理可能出现的输入错误。

运行结果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到