数的补码表示法
在计算机内,为了表示正负数,并便于进行各种算术运算,对有符号数采用二进制的补码表示形式。
补码的最高位用来表示正负数:0―正数,1―负数。
正数的补码是其自身的二进制形式,负数的补码是把其正数的二进制编码变“反”,再加1而得。
(7)、二进制数的符号扩展
在汇编语言中,我们经常要对字/字节的数据进行操作。当把“字节”转换成“字”,或“字”转换成“双字”时,就需要进行符号扩展。符号扩展的具体操作就是把已知信息的最高位扩展到所有更高位。
例1.1 把8位补码01011010、10101100分别扩展成16位补码。
解:根据符号扩展的含义,“字节→字”的具体扩展结果如下:
0101101010101100
00000000010110101111111110101100
例1.2 把16位补码0101101111001010、1010111101011011别扩展成32位补码。
解:根据符号扩展的含义,“字→双字”的具体扩展结果如下:
01011011110010101010111101011011
0000000000000000010110111100101011111111111111111010111101011011
(8)、n位二进制的表示范围
n位二进制所能表示的无符号整数的范围:0≤x≤2n-1。
n位二进制所能表示的有符号整数(补码表示)的范围:-2n-1≤x≤2n-1-1。
在汇编语言中,常用到n为8和16时的数值范围:
n=8时,无符号整数的范围:0~255,有符号整数的范围:-128~127;
n=16时,无符号整数的范围:0~65535,有符号整数的范围:-32768~32767。
(9)、BCD码
通常,我们习惯用十进制表示的数据,但计算机是用二进制来表示数数据的,这就需要进行数值进制之间的转换。我们把每位十进制数转换二进制的编码,简称为BCD码(Binary Coded Decimal)。
BCD码是用4位二进制编码来表示1位十进制数。这种编码方法有多种,但常用的编码是8421BCD编码,如表1.2所示。这种BCD编码实际上就是0~9的“等值”二进制数。
表1.2 8421BCD编码列表
十进制数字8421BCD码十进制数字8421BCD码
0000050101
1000160110
2001070111
3001181000
4010091001
用BCD码进行进制的转换时,是要求在二种进制的表现形式上快速转换,而不是要求在“数值相等”的含义快速转换。
例1.3 求十进制数2000的BCD编码和其二进制数。
解:2000的BCD编码是把每位上的数2、0、0、0分别转换为其对应的BCD编码:0010、0000、0000和0000,把它们合在一起就是2000的BCD编码:0010 0000 0000 0000。
十进制数2000的二进制数是:11111010000,它们在数值上是相等的。
|