补码原理

核心在于:
对于范围为[0,M)的整数计量系统,其模为M。和为M的两个数互为补数。
如果有两个整数a,b∈[0, M),那么f(a-b)==f(a+c),其中c= M-b,是b的补码,f是一个映射,定义为:
当0<=x< M时,f(x)=x;
当x>= M时,f(x)=x % M;
当x<0时,f(x)=f(M +x).
其中%为取余运算(效果同编程语言中的取模运算)。
在计算机中,f是由溢出隐式实现的,所以天生就有a-b==a+c。这就把减运算转化成了加运算。
于是,为了便于执行减运算,计算机就把-b表示为其补码c。
假设机器字有n位,那么M=2n,c=2n-b。
人在纸上怎么计算2n-b的二进制值?2n的原码就是1后面跟了n个0,直接用它减b的原码不方便,先用2n-1的原码(n个1)减b的原码,得到的结果加上1就是2n-b的值了——这就是“取反加1”的由来。

更深入:
[url]http://www.nowamagic.net/librarys/veda/detail/266[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值