反码与补码

目录

1. 原码(Sign-Magnitude)

2. 反码(Ones' Complement)

3. 补码(Two's Complement)

4.为什么补码成为标准? 

5.快速求补码的方法


1. 原码(Sign-Magnitude)

  • 定义:最高位为符号位(0正1负),其余位表示绝对值。

  • 示例

  • +5:0000 0101

  • -5:1000 0101

问题

  • 加减法需处理符号位,硬件复杂。

  • 0有两种表示(0000 00001000 0000)。

2. 反码(Ones' Complement)

  • 定义

    • 正数与原码相同。

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

  • 示例

    • +5:0000 0101

    • -5:1111 1010

  • 运算

    • 减法可转为加法,但需处理循环进位(最高位进位加到最低位)。

    • 例如:5 + (-3)

0000 0101 (5)
+ 1111 1100 (-3的反码)
= 1 0000 0001 → 补上进位 → 0000 0010 (2)

  • 问题

    • 0仍有两种表示(0000 00001111 1111)。

3. 补码(Two's Complement)

  • 定义

    • 正数与原码相同。

    • 负数:反码加1(符号位参与运算)。

  • 示例

    • +5:0000 0101

    • -5:1111 1011

  • 优势

    • 统一加减法:无需处理符号位,直接相加后舍弃溢出位。

    • 唯一0表示0000 0000

    • 扩展负数范围:n位补码可表示−2�−1−2n−1到2�−1−12n−1−1(如8位:-128~127)。

  • 运算示例5 + (-3)

0000 0101 (5的补码)
+ 1111 1101 (-3的补码)
= 1 0000 0010 → 舍弃进位 → 0000 0010 (2)

4.为什么补码成为标准? 

  1. 运算统一:加减法仅需加法器,简化电路。

  2. 0唯一性:避免歧义。

  3. 范围更大:多表示一个负数(如8位的-128)

5.快速求补码的方法

  1. 从右往左找到第一个1,保留该位及右侧所有位,左侧全部取反。

  2. 例如:求-5(8位):

  • 原码:0000 0101
  • 反码:1111 1010
  • 补码:1111 1011(反码+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值