首页 理论教育整数的表示方法及补码求解步骤

整数的表示方法及补码求解步骤

【摘要】:上面介绍的表示方法称为原码表示法。为统一加减运算规则,方便计算机运算,数值为负的整数在计算机内部实际上是采用补码来表示的。负整数补码求解的步骤为:先将负整数转换成原码的形式,最高位即符号位肯定为1,将除符号以外的每一位取反,得到称为反码的表示形式,最后将反码的最低位(末位)加1,即可得到补码的表示形式。

整数不带小数点,或者说其小数点始终隐含在个位数的后面,故也称之为“定点数”(fixed point integer)。计算机中的整数又可以分为无符号整数(unsigned integer)和带符号整数(signed integer)两类,它们可以用8位、16位、32位甚至更多位数来表示。

8个二进制位表示的无符号整数的取值范围是0~255(28-1),16个二进制位表示的无符号整数的取值范围是0~65 535(216-1),32个二进制位表示的无符号整数的取值范围是0~232-1。

而带符号整数必须使用一个二进制位来作为符号位,一般使用最高位(即最左边的一位)来表示,“0”表示“+”(正数),“1”表示“-”(负数)。例如,使用8个二进制位表示整数+56和-56分别如下:

(+56)10=(00111000)2(-56)10=(10111000)2

由此可见,8个二进制位表示的带符号整数的取值范围是-127~+127(-27+1~+27-1),16个二进制位表示的带符号整数其取值范围是-32 767~+32 767(-215+1~+215-1),若使用n个二进制位表示带符号整数,则其取值范围是-2n-1+1~+2n-1-1。

上面介绍的表示方法称为原码表示法。为统一加减运算规则,方便计算机运算,数值为负的整数在计算机内部实际上是采用补码来表示的。

负整数补码求解的步骤为:先将负整数转换成原码的形式,最高位即符号位肯定为1,将除符号以外的每一位取反,得到称为反码的表示形式,最后将反码的最低位(末位)加1,即可得到补码的表示形式。例如:

(-56)=1011,1000

(-56)=1100,0111

(-56)=1100,1000

由于二进制编码的位数较多,故采用每4位用逗号隔开的书写格式。(www.chuimin.cn)

注意,只有负整数才需要通过上面的步骤计算补码,而正整数的反码和补码与原码相同。

下面以8个二进制位表示一个带符号整数为例,考察两个非常有趣的数字“0”和“-128”。若将0分别看作+0和-0,则它们的原码和补码的表示形式如下:

(+0)=0000,0000(-0)=1000,0000

(+0)=0000,0000(-0)=0000,0000

可见,当0采用原码的表示形式时有2个编码,而采用补码来表示后,+0和-0的编码统一成了“0000,0000”。

下面考察数字-128。可以求得-128的绝对值的二进制形式是“1000,0000”,显然使用8个二进制位已无法表示。在此,暂“借”1位即使用9个二进制位来表示,最高位仍为符号位,如下所示:

(-128)=1,1000,0000

(-128)=1,0111,1111

(-128)=1,1000,0000

最后将“借”得的1位“归还”,可得(-128)=1000,0000。这种情况称为“溢出”。引入补码后,8个二进制位表示的带符号整数的取值范围扩大成-128~+127(-27~+27-1),16个二进制位表示的带符号整数的取值范围扩大成-32 768~+32 767(-215~+215-1),n个二进制位表示的带符号整数的取值范围是-2n1~+2n1-1。n位二进制补码可表示整数的个数要比n位原码多一个(即补码“1000…00”被用来表示整数-2n1)。