什么是补码

uim2023-01-30  31

补码(Two's complement),是有符号数的一种二进制表示方式。

我们用B2Tw来表示一个补码。其中w代表二进制数的位长,B2T的含义其实是“二进制转补码”。

计算补码实际表示的数,我们需要将每一位上的值和对应权重相乘然后进行相加。每一位(索引记为i,从0开始,从右往左递增)的权重为2i,但最高位的权重比较特殊,需要取负数,为-2w-1。

补码表示的最大值和最小值

对于一个位长为w的补码表示,最大值TMaxw为2^(w-1) - 1,此时最高位为0,其余位都是1。最小值TMinw为-2^(w-1),此时最高位为1,其余位都是0。

如对于4位的补码,最大值TMax4 = B2T4(),对应的值为2^3 - 1 = 7,最小值为B2T4(),对应的值为-2^3 = -8。

正数的补码就是原码本身,负数的补码是其反码加1。

计算机中的有符号数有即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

补码:在反码的基础上加1,这样可以方便计算机进行计算,可以让“最高位符号位都能参与计算”。原码:字节的最高位为符号位,其余表示数值大小,最简单;反码:正数的反码和原码一样,负数的反码除最高位符号位外,其他位都取反。

补码

补码“模”概念的引入、负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,解决了符号的表示的问题,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计。

补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。补码概念的引入和当时运算器设计的背景不无关系,考虑到了数据存储和处理所需要的硬件代价。

以上内容参考 百度百科——补码


转载请注明原文地址:https://juke.outofmemory.cn/read/2836587.html

最新回复(0)