原码反码补码的计算

Abstract

  • 原码:直接使用符号位表示正负数,简单直观,但有两个零(+0和-0)。
  • 反码:解决了两个零的问题,但运算复杂性较高。
  • 补码:是计算机中普遍使用的表示方式,解决了正负数计算的一致性问题,并且仅有一个零(0)。

1. 原码(Sign-Magnitude)

原码直接使用一个位表示符号,剩下的位表示数值大小。最高位(MSB)为符号位:

  • 0表示正数
  • 1表示负数
示例
  • +5的8位原码表示:0000 0101
  • -5的8位原码表示:1000 0101

2. 反码(One’s Complement)

反码通过对原码的每一位取反来表示负数:

  • 正数的反码与原码相同
  • 负数的反码是将原码的符号位保持不变,其余各位取反
示例
  • +5的8位原码表示:0000 0101,反码相同:0000 0101
  • -5的8位原码表示:1000 0101,反码:1111 1010

3. 补码(Two’s Complement)

补码是计算机中表示有符号整数的标准方法。它通过对反码加1来获得:

  • 正数的补码与原码相同
  • 负数的补码是将其反码加1
示例
  • +5的8位原码表示:0000 0101,补码相同:0000 0101
  • -5的8位原码表示:1000 0101,反码:1111 1010,补码:1111 1011(反码+1)

计算示例

让我们详细计算一个具体的数值,比如-5在8位二进制下的原码、反码和补码。

计算步骤
  1. 原码

    • +5的原码:0000 0101
    • -5的原码:1000 0101
  2. 反码

    • +5的反码:0000 0101
    • -5的反码:将1000 0101的符号位保持不变,其余各位取反:1111 1010
  3. 补码

    • +5的补码:0000 0101
    • -5的补码:在反码1111 1010基础上加1:1111 1011

表示和范围

在8位系统中,补码的表示范围为:

  • 正数:0000 0000(0)到0111 1111(127)
  • 负数:1000 0000(-128)到1111 1111(-1)
  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值