软考
APP下载

原码补码反码加减运算

在计算机中,数值的表示方式可以用原码、反码和补码。这些数制都有它们自己的加减运算规则,本文将从多个角度解析原码、反码和补码的加减运算规则。

1. 原码加减运算

原码有着最简单的表示方式,其中符号位为该数位的最高位(0表示正数,1表示负数),其余为数值部分。原码加减运算也是最直观的一种加减法,就是将两个数的原码直接相加或相减,并保留最高位符号位。但是,原码加减运算存在着一个缺陷:当两个数相加和超出了该位数值的范围时,会出现数字溢出(即产生了错误的结果)。

例如:3的原码是0000 0011;-2的原码是1000 0010。将它们相加得到:0000 0001(1的原码),这是正确答案。再看一个例子,9的原码是0000 1001,-5的原码是1000 0101。将它们相加得到:1000 1110。其中,符号位是1,表示这个数应是负数,但它是一个错误的值,因为其本应等于4的原码(0000 0100)。

2. 反码加减运算

在反码中,符号位于该数的最高位,数值部分采用正数的二进制表示方法表示,负数的数值部分采用正数数值部分的“反码”表示。反码加减运算需要分成两种情况:

(1) 同号数相加,符号位不变,按照原码数值部分相加。

例如:对于7+3,它们的二进制表示是0111和0011,符号相同,按照原码算法相加,结果为1010,即-6。另外,-5和-3按照上述算法相加的结果为1000,即-0。这里需要说明的是,-0的原码和反码都是0000 0000,但它的补码是1000 0000。

(2)异号数相加,符号位在计算过程中改变,也是按照原码相加,但是最终结果中需要将符号位取反,并在数值部分加上1。

例如:7+(-3),7的二进制表示是0111,-3的二进制表示是1001(3的二进制表示是0011,其反码是1100,因此-3的反码是1010),数值相加得到1100(二进制),将符号位取反得到0100,数值+1得到0101,即-5。

对于反码的减法运算,可以将减法转换为加法:a-b=a+(-b)。例如:7-3=7+(-3)。

反码加减运算虽已解决了某些数字溢出的问题,但是依然存在错误的值。

3. 补码加减运算

补码采用的是负数的二进制补码表示方法。正数的原码、反码和补码是一样的。负数的补码是将该数的反码+1。补码加减法也分为两种情况:

(1)同号数相加,符号位不变,按照数值部分相加,如果有进位,则舍去进位。

例如:7+3,它们的二进制表示是0000 0111和0000 0011,按照补码算法相加,结果为0000 1010(符号位为0,表示正数),即10。

(2)异号数相加,以补码表示加减数,符号位在计算过程中改变,也是按照绝对值相加,只是要多加1(这1是第9位的进位),结果中仍要取反。

例如:7+(-3),7的补码是0000 0111,-3的补码是1111 1101(3的原码是0000 0011,反码是1111 1100,补码是1111 1101),按照补码算法相加,结果为:1111 1100。其中,符号位为1,表示负数,数值为0011 1111(-4的补码,原码为1000 0100)。

补码加减法是计算机中最常用的加减法,从补码可以看出计算机中如何存储负数和进行加减运算。

总之,在计算机中,原码、反码和补码实际上是表示同一个数的不同方法,各自有着自己的优缺点和加减法规则。而补码加减法则是解决计算机中符号运算和溢出问题最常用的方法。

文章

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库