通俗理解补码的意义

数有正负之分,我们平时用0,1,2,3,4,5,9,10,20,8948等表示正数,在正数前面加上符号 “-” -1,-2,...,-10等来表示负数。但在计算机的世界里没有符号 “-”,只有0和1。而且,我们还要将减法器从计算机的世界里拿走。因为加法器要比减法器简易并且廉价。 计算机表示数的规则是0和1的组合,加法器的规则是进行与或运算,也就是我们平常理解的加法运算。没有了减法器如何让计算机完成减法运算呢?

请看下面的例子:钟表上用0-23表示整点的时间,钟表不能倒着走,只能往前走,但10点过去之后会有8点。也就是10点过去22个小时之后就是8点。那就是10加上22等于8。这不就是用加法10+22完成了减法10-2嘛!现在我们看看这到底是怎么实现的,10+22=32,但时间最大就是23,没有32。10加上22之后之所以是8是因为,在23点过去一个小时之后,时间又从0开始计数。也就是23+1=0,那么10+22=23+1+8=0+8=8。这样我们可以把时钟看作计算器,x+y的结果就是x点开始过去y个小时后的时刻,x-y其实是x点开始过去23+1-y个小时的时刻。x-y=x+(-y)=x+(23+1-y),所以-y=23+1-y。那么时钟上的数对应的正负数如下表所示:

数  x时钟
00
33
1111
-1212(最大时间+1-12)
-123(最大时间+1-1)

计算机中也存在同样的情况,计算机能表示的数是有限的,这和钟表的原理一样,钟表最大是23,假设有个计算机只有4位,其最大只能表示1111,换算成10进制就是15。所以该计算机只能表示-8-7的十进制数,按照上面所说的计算机计算规则,如果我们想用4位的计算机完成2+3的运算只需将0010(2)和0011(3)输入加法器即可,完成3-2的运算则需要将0011(3)和1110(14=15+1-2)输入加法器,由于计算机只有4位,10001多余的高位溢出,所以其输出为0001(1)。

我们规定用以下规则表示我们熟悉的10进制数:

10进制数二进制补码
000000000
100010001
701110111
-8-10001000(1111+0001-1000)
-7-01111001(1111+0001-0111)
-1-00011111(1111+0001-0001)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值