【数电百问】码制:原码、反码、补码的联系与区别?

1. 原码:是以符号位为0的称正数,符号位为1 的称负数的一种数码。

1.1 正数+正数 = 正数(✓)

1000 0000【128】 +
0000 1000【8】 =
1000 1000【136】
根据栗子所示,这种运算情况结果正确。

1.2 正数+负数 = 正数(×)

0 0010【2】 +
1 0100【-4】=
1 0110【-6】
根据栗子所示,这种运算情况结果错误,正确结果应为【-2】。

1.3 负数+负数 = 负数(×)

1000 1000【-8】+
1000 1000【-8】=
0001 0000【16】
根据栗子所示,这种运算情况结果错误,正确结果应为【-16】。

总结:原码只能进行正数运算。

2. 反码:正数的反码是其本身(等于原码),负数的反码是符号位保持1不变,其余按位取反。

为了补充原码的运算能力不足的情况,衍生出一种新的数码——反码

2.1 正数+正数 = 正数(✓)

原码下 || 反码下 :
1000 0000【128】 +
0000 1000【8】 =
1000 1000【136】

2.2 正数+负数 = 正数(✓)

原码下
0 0010 【2】 +
1 0100 【-4】=
1 0110 【-6】
反码下:
0 0010 【2】 +
1 1011 【-11】=
1 1101 【-13】

根据栗子所示,将结果反码转为原码,为1 0010【-13】,这种运算情况结果正确。

2.3 负数+负数 = 负数(×)

原码下
1000 1000 【-8】+
1000 1000 【-8】=
0001 0000【16】
反码下
1111 0111 +
1111 0111 =
1110 1110

根据栗子所示,将结果反码转为原码,为1001 0001【-17】,这种运算情况结果错误。

3. 补码:正数的补码是其本身,负数的补码等于其反码 +1。

在补码例子基础上验证

3.1 正数+正数 = 正数(✓)

原码下 || 反码下 ||补码下:
1000 0000【128】 +
0000 1000【8】 =
1000 1000【136】

3.2 正数+负数 = 正数(✓)

反码下
0 0010 【2】+
1 0100 【-4】=
1 0110 【-6】
补码下
0 0010 +
1 1100 =
1 1110
根据栗子所示,将结果补码转为原码,为1 1110 -> 1 1101 -> 1 0010【-2】,这种运算情况结果正确。

3.3 负数+负数 = 负数(✓)

反码下
1111 0111 +
1111 0111 =
1110 1110
1001 0001【-17】
补码下
1111 1000 +
1111 1000 =
1 1111 0000
根据栗子所示,将结果补码转为原码,为1 1111 0000 ->1 1110 1111-> 1 0001 0000【-16】,这种运算情况结果正确。

4. 总结:补码是能在计算机上运行各种运算的数制,原码与反码均有缺点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&玖月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值