原码、反码、补码的由来

前言

在计算机中,数据通常以二进制形式表示,二进制又可以用原码、反码和补码方式来表示。如果只有正数和加法运算,使用原码即可,反码、补码的出现是为了解决负数和减法所带来的问题。

计算机信息存储的最小单位是byte(8位)。便于理解,接下来用带符号位的四位二进制数举例说明。

一、真值

真值是指在计算机中实际表示的数值,它可以通过原码、反码或补码转化得到。对于无符号整数,真值与原码相同;对于有符号整数,真值可通过补码表示。

二、原码(Sign-Magnitude)

原码定义:最高位表示符号位(0为正数,1为负数),其余位表示数值部分。例如0011表示+3,而1011表示-3

原码表示方式直观易懂,易于正值运算,是人脑最容易理解和计算的表示方式。

CPU中的运算器只有加法运算器,没有减法运算器,减法需要通过加法来实现,减去一个数,相当于加上这个数的相反数。

2 + 3 = 5,即0010 + 0011 = 0101 = 5 ---->正确
1+(-1) = 0,即0001 + 1001 = 1010 = -2 ---->不对!
2+(-2) = 0,即0010 + 0010 = 1100 = -4 ---->不对!
2 + -1 = 1,即0010 + 1001 = 1011 = -3 ---->不对!

如下正负数原码对比

正数各码相同 负数原码
0(0000) -0(1000)
1(0001) -1(1001)
2(0010) -2(1010)
3(0011) -3(1011)
4(0100) -4(1100)
5(0101) -5(1101)
6(0110) -6
  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值