首页 理论教育 无符号数与带符号数

无符号数与带符号数

时间:2023-02-28 理论教育 版权反馈
【摘要】:计算机中的数用二进制数形式表示,数的符号也是用二进制表示的。在机器中,一个数连同其符号在内的数值化表示的数称为机器数。到目前为止,我们把二进制数看做无符号数,因此,n位二进制数可以表示的无符号数范围为0~2n-1。例如,8位二进制数00H~0FFH表示0~255,16位二进制数0000H~0FFFFH表示0~65535。8086/8088CPU采用二进制补码表示带符号数,以最高位作为符号位。

1.4.1 无符号数与带符号数

计算机中的数用二进制数形式表示,数的符号也是用二进制表示的。在机器中,一个数连同其符号在内的数值化表示的数称为机器数。机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。由于8086/8088机中的整数采用补码表示法。这里只介绍整数的补码表示。

1.无符号数的补码表示

到目前为止,我们把二进制数看做无符号数(Unsigned Number),因此,n位二进制数可以表示的无符号数范围为0~2n-1。例如,8位二进制数00H~0FFH表示0~255,16位二进制数0000H~0FFFFH表示0~65535。那么,如何表示负数呢?

2.带符号数的补码表示

8086/8088CPU采用二进制补码表示带符号数(Signed Number),以最高位作为符号位(0表示正数,1表示负数)。例如,对于16位数来说,8000H是负数,0FFFH是正数。具体表示规则为:

正数的补码是其本身;负数的补码是对其正数“各位求反、末位加1”后形成的。我们把“各位求反、末位加1”的操作称为求补。

n位二进制补码数可以表示的带符号数范围为-2n-1~2n-1-1。例如,8位二进制数可以表示-128~127,16位二进制数可以表示-32768~32767,32位二进制数可以表示-2147483648~2147483647。

【例1-16】 若一个十进制数用8位二进制数来表示,

[5]=00000101B

[-5]=11111011B

[0]=00000000B

[-0]=00000000B

那么,-5的补码是如何得到的呢?计算过程如下:

0000 0101 5的二进制表示

1111 1010各位求反

1111 1011末位加1,得-5的补码

反之,对补码表示的-5进行求补操作,可得到5的补码。计算过程如下:

1111 1011-5的8位二进制补码表示

0000 0100各位求反

0000 0101末位加1,得5的补码

补码具有如下特性:

(1)[x]img11[-x].

【例1-17】 若一个十进制数用8位二进制数来表示,

[10]=00001010B

求补后得

[-10]=11110110B

反之亦然。

(2)[x+y]=[x]+[y]

(3)[x-y]=[x]+[-y]

【例1-18】 若一个十进制数用8位二进制表示,实现25减32,可用减法:

img12

其中,向高位的借位丢失。或者转换为如下的加法:

img13

结果相同。

因此,在计算机内部,补码减法是通过对减数求补后,再将减法转换为加法进行的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈