补码、原码、反码

在计算机用一个数的最高位存放符号, 0表示正数, 1表示负数,字节长度为8。

则-3在计算机中用1000 0011表示,由此可以推出8位二进制数的取值范围为[11111111,01111111]即就是[-127,127]。

 

反码:

  1. 正数的反码为本身
  2. 负数的反码为符号位不变,其余各位取反

补码:

  1. 正数的补码为其本身
  2. 负数的补码为反码+1

 

 

 

参考:https://www.cnblogs.com/goahead--linux/p/10904701.html

原码反码补码是计算机中用于表示有符号数的种编码方式。机器数的第一位是符号位,后边才是真正的数值,带符号位的机器数对应的真正数值称为机器数的真值[^1]。以下是它们之间的转换方法: #### 正数情况 对于正数,原码反码补码是相同的。例如,十进制数 +5,若用 8 位二进制表示,其原码反码补码都是 0000 0101。 #### 数情况 - **原码反码**:符号位不变,其余各位取反。例如,十进制数 -5 的原码是 1000 0101,其反码是 1111 1010。 - **反码补码**:在反码的基础上加 1。如 -5 的反码 1111 1010,加 1 后得到补码 1111 1011。 - **补码反码**:补码减 1。例如 -5 的补码 1111 1011,减 1 后得到反码 1111 1010。 - **反码原码**:符号位不变,其余各位取反。如 -5 的反码 1111 1010,转换为原码是 1000 0101。 以下是 Python 代码示例,用于实现原码反码补码的转换: ```python def decimal_to_binary(decimal_num, bits=8): if decimal_num >= 0: binary_str = bin(decimal_num).replace("0b", "") return binary_str.zfill(bits) else: positive_binary = bin(-decimal_num).replace("0b", "").zfill(bits) # 原码 original_code = '1' + positive_binary[1:] # 反码 inverse_code = '1' + ''.join('1' if bit == '0' else '0' for bit in positive_binary[1:]) # 补码 complement_code = bin(int(inverse_code, 2) + 1).replace("0b", "").zfill(bits) return original_code, inverse_code, complement_code # 示例:转换 -5 original, inverse, complement = decimal_to_binary(-5) print(f"原码: {original}") print(f"反码: {inverse}") print(f"补码: {complement}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值