Banson's Blog
补码表示法

补码是什么

补码是整数的表示方法

定义

集合MN,LZM(Machine)集合是整数的机器表示(十进制),L(Logical)集合是被表示的整数。

假设讨论的是w位整数,那么:mM,m[0,2w1]lL,l[2w1,2w11]。定义函数 f:ML,f(x)={x0x2w11x2w2w1x2w1

经过推导,它的反函数 f1:LM,f1(x)={x+2w2w1x1x0x2w11

可以看出,f是一个双射,即对应法则f给出了从机器表示的数到逻辑上的数的一一对应。

如何理解

补码是一种对应关系,仅此而已。补码通过一个双射使得机器表示的数(非负)和一定范围内的整数(有正有负)一一对应了起来。不要把二进制表示的最高位看作符号位而割裂开来。最高位为1代表负数仅仅是一种刻意设计的巧合。

补码表示的奇妙性质

计算相反数

已知aL,f1(a)M,对a的正负进行简单讨论可以得到: f1(a)=2wf1(a)


Last modified on 2020-05-14