为什么叫补码

为什么叫补码

为什么叫补码 #

补码的英文名称是 Two’s-complement ,可直译为“对数字 2 的补充”,那为什么会叫这个名字呢?你可以先停下来思考一下,然后再来看看我的理解:

首先,我们来计算一下有符号整数 3 对应的四位补码,可以得到一个二进制序列 “0011”。将该二进制序列与上述 -3 对应的二进制序列相加,通过进位可以得到序列 “10000”,该序列可以表示无符号正整数 16。

因此,我们可以得到这样一个结论:对于非负数 x,我们可以用 \(2^w − x\) 来计算−x 的 w 位表示。套用在上述的例子中,可以得到“在四位补码的情况下,对于非负数 3,可以用无符号数 13 (即 16−3) 的位模式来表示有符号数 -3 的位模式”这个结论,即两者位模式相同。而补码的英文名称正是对 x、−x 和 \(2^w\) 三者之间的关系进行的总结。

Viewpoint #

From #

02|程序基石:数据与量值是如何被组织的?