二进制原码、反码、补码之间的转换——MZH

正数的转换规则

对于正数,其原码、反码和补码在二进制表示上是完全一致的。也就是说,如果一个数是正数,那么:

  • 原码:直接按该数的二进制表示即可。

  • 反码:与原码相同。

  • 补码:同样与原码相同。

负数的转换规则

对于负数,其原码、反码和补码的转换规则如下:

  • 原码:最高位(符号位)为1,其余位为该数绝对值的二进制表示。

  • 反码:在原码的基础上,符号位保持不变(仍为1),其余位按位取反(即将0变为1,将1变为0)。

  • 补码:在反码的基础上,符号位仍然保持不变(仍为1),其余位加1(也就是反码最低位加1,逢二进一)。

转换过程示例

原码转反码
  • 正数:直接保持原码不变。

  • 负数:符号位不变,其余位按位取反。

反码转原码
  • 正数:直接保持反码(也即原码)不变。

  • 负数:符号位不变,其余位再次按位取反(即恢复到原码)。

原码转补码
  • 正数:直接保持原码(也即补码)不变。

  • 负数:符号位不变,其余位先按位取反(得到反码),然后在最低位加1(得到补码)。

补码转原码
  • 正数:直接保持补码(也即原码)不变。

  • 负数:有两种方法可以得到原码:

    1. 直接法:符号位不变,其余位先减1(得到反码,注意这里是二进制减法,需要借位),然后再次按位取反(得到原码)。

    2. 间接法:符号位保持不变,其余位按位取反后,在最低位再加1(注意这里的加1可能会产生进位,需要处理),然后舍弃掉溢出的最高位(如果存在的话),得到的结果就是原码。更常用的是第一种直接法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值