补码的意义

       计算机中CPU内运算器应该是用ACC来完成加减法运算的。但是Accumulator怎么完成减法运算呢?唐朔飞的教材中这样描述了补码的诞生。

       为了用ACC计算加减法,那么对真值进行了分类,用前加0/1区别正负,形成了原码。为了完成减法运算产生了补码+反码。移位是为了区别大小。


[+0]原=0,0

[-0]原=2^n-0=2^n=1,000000,n个0

[+0]反=0,0

[-0]反=2^(n+1)-1+0=2^(n+1)-1=1,00000```0-0```000001=11```11111,n+1个1

       

删掉了一些原来写的,现在看来当时的理解还有误差。

       补码是为了得到负数而设置的,利用的是mod 可以产生的负数与正数相等。所以只要有补码的存在,必须满足有mod 2^n+1才可以。这样的话,-0的补码等于+0的补码也就解释得通了,是因为满足mod的规则,所以在-0的补码=(1),00000的时候1产生了溢出,满足mod 2^n+1自动消去了,然后才在最后的-2^n定义里补充了这一个数,从而使得数有对应关系。

       其实唐的教材在反码的地方有一个令人疑惑的地方,教材中说反码中有mod 2-2^-n存在,可以这样理解。但实际上是不存在的,因为如果存在,那么就是会使得-0的反码溢出,导致-0的反码和+0的反码相等,这和定义不符,反码应该是和原码定义对应的。整数部分也一样。当然由于现代计算机都是用补码进行的计算,所以,基本都有mod规则存在。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值