在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码的计算
(1)正数的补码
与原码相同。
【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。
(2)负数的补码
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
(2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
补码运算
补码的绝对值(称为真值)
若要得到一个负二进制数的绝对值(称为真值),只要各位(包括符号位)取反,再加1,就得到真值。
如:二进制值:10111111(-65的补码)
各位取反:01000000
加1:01000001(+65的补码)
代数加减运算
1、补码加法
[X+Y]补 = [X]补 + [Y]补
【例5】X=+0110011,Y=-0101001,求[X+Y]补
[X]补=00110011[Y]补=11010111
[X+Y]补 = [X]补 + [Y]补 =00110011+11010111=00001010
注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是 100001010,而是00001010。
2、补码减法
[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补
其中[-Y]补称为负补,求负补的方法是:对补码的每一位(包括符号位)求反,最后末位加“1”。
3、补码乘法
设被乘数【X】补=X0.X1X2……Xn-1,乘数【Y】补=Y0.Y1Y2……Yn-1,
【X*Y】补=【X】补×【Y】补,即乘数(被乘数)相乘的补码等于补码的相乘。