第2章计算机中的数制和编码_第1页
第2章计算机中的数制和编码_第2页
第2章计算机中的数制和编码_第3页
第2章计算机中的数制和编码_第4页
第2章计算机中的数制和编码_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 计算机中的数制和编码 第2章 计算机中的数制和编码 2.1 无符号数的表示及运算无符号数的表示及运算 2.2 带符号数的表示及运算带符号数的表示及运算 2.3 信息的编码信息的编码 2.4 数的定点与浮点表示法数的定点与浮点表示法 第2章 计算机中的数制和编码 2.1 无符号数的表示及运算 2.1.1 无符号数的表示方法无符号数的表示方法 1. 十进制数的表示方法 十进制计数法的特点是: 逢十进一; 使用10个数字符号(0,1,2,9)的不同组合来表示一个十进制数; 以后缀D或d表示十进制数(Decimal),但该后缀可以省略。 第2章 计算机中的数制和编码 任何一个十进制数可表示为:

2、 110nmiiiDDN式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是09十个数字符号中的任一个)。 例例2.1 138.5(D)= 1012105108103101(2.1.1)第2章 计算机中的数制和编码 2. 二进制数的表示方法二进制数的表示方法 二进制计数法的特点是: 逢二进一; 使用2个数字符号(0,1)的不同组合来表示一个二进制数; 以后缀B或b表示二进制数(Binary)。 任何一个二进制数可表示为: 12nmiiiBBN式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1)。 例例2.2 1101.11B= )(75.1321212

3、1202121210123D(2.1.2)第2章 计算机中的数制和编码 3. 十六进制数的表示法十六进制数的表示法 十六进制计数法的特点是: 逢十六进一; 使用16个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF 依次表示1015; 以后缀H或h表示十六进制数(Hexadecimal)。 第2章 计算机中的数制和编码 任何一个十六进制数可表示为: 116nmiiiHHN式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个)。 例例2.3 0E5AD.BFH =21012

4、316151611161316101651614(2.1.3)第2章 计算机中的数制和编码 一般来说,对于基数为的任一数可用多项式表示为: 1nmiiiXXkN(2.1.4) 式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,X-1共X个数字符号中任一个;Xi为第i位的权。 第2章 计算机中的数制和编码 2.1.2 各种数制的相互转换各种数制的相互转换 1任意进制数转换为十进制数任意进制数转换为十进制数 二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式2.1.2,2.1.3和2.1.4各位按权展开(即该位的数

5、值乘于该位的权)求和即可。 第2章 计算机中的数制和编码 2. 十进制数转换成二进制数十进制数转换成二进制数1 1)整数部分的转换整数部分的转换下面通过一个简单的例子对转换方法进行分析。例如, B2B3B0B2B1B0B3B1012321202121101113BD 可见,要确定13D对应的二进制数,只需从右到左分别确定 B0,B1,B2,B3即可。 第2章 计算机中的数制和编码 式(2.1.5)右侧除以2: 商为 ,余数为1,此余数即为B0; 商再除以2: 商为 ,余数为0,此余数即为B1; 商再除以2: 商为 ,余数为1,次余数即为B2; 商再除以2: 商为(商为0时停止) ,余数为1,此

6、余数即为 B3。 012202121012121021第2章 计算机中的数制和编码 由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位。 显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。 第2章 计算机中的数制和编码 2) 小数部分的转换同样用一个简单例子说明十进制小数部分的转换方法。例如, B-1B-2B-1B-221212111 .075.0BD要将一个十进制小数转换为二进制小数,实际上就是求B-1,B-2,给式(2.1.6)右侧乘以基数2得: (2.1.6)1211整数部分为B

7、-1小数部分第2章 计算机中的数制和编码 整数部分为1,此即为B-1。小数部分为12-1。 小数部分再乘以基数2得:整数部分为1,此即为B-2。 此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4,直到小数部分为0或小数部分的位数满足一定精度时为止) 第2章 计算机中的数制和编码 由以上分析可得到十进制小数部分转换为二进制小数的方法: 小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位。 显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。 第2章 计算机中的数制和编码 例例2.4 将13.75转换为二进制

8、数。 分别将整数和小数部分进行转换: 整数部分:13=1101B 小数部分:0.75=0.11B 因此,13.75=1101.11B 第2章 计算机中的数制和编码 例例2.5 将28.75转换为十六进制数 整数部分:28=1CH 小数部分:0.7516=12.0, B-1=CH,小数部分已为0,停止计算。因此,28.75=1C.CH 第2章 计算机中的数制和编码 3二进制数与十六进制数之间的转换二进制数与十六进制数之间的转换 因为24=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。 将二进制数转换为十六进制数的方法将二进制数转换为十六进制数

9、的方法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。 将十六进制数转换为二进制数的方法:将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。 第2章 计算机中的数制和编码 例例2.6 1101110.01011B=0110,1110.0101,1000B=6E.58H 2F.1BH=10 1111.0001 1011B 第2章 计算机中的数制和编码 2.1.3 二进制数的运算 1. 二进制数的算术运算 (1) 加: 0+0=0 0+1=1 1+

10、0=1 1+1=0(进1) (2) 减: 0-0=0 1-1=0 1-0=1 0-1=1(借位) (3) 乘: 00=0 01=0 10=0 11=1 (4) 除: 二进制除法是乘法的逆运算。 第2章 计算机中的数制和编码 2. 二进制数的逻辑运算二进制数的逻辑运算 (1) “与“运算(AND). “与”运算又称逻辑乘,可用符号“”或“”表示。运算规则如下:00=0 01=0 10=0 11=1 可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。 第2章 计算机中的数制和编码 (2) “或”运算(OR) “或”运算又称逻辑加,可用符号“”或“+”表示。运算规则如下:00=0 01=

11、1 10=1 11=1 可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。 第2章 计算机中的数制和编码 (3) “非”运算(NOT) 变量的“非”运算结果用表示。逻辑“非”运算规则如下: (4) “异或”运算(XOR) “异或”运算可用符号“”表示。运算规则如下: 可以看出,两变量只要不同,“异或”运算的结果就为“1”。 10 01 011101110000第2章 计算机中的数制和编码 (4) “异或”运算(XOR) “异或”运算可用符号“”表示。运算规则如下: 可以看出,两变量只要不同,“异或”运算的结果就为“1”。 011101110000第2章 计算机中的数制和编码 例例

12、2.7 A=11110101B, B=00110000B,求 ?BABABABABBA00110000BBA11110101BBA11000101BA00001010BB11001111解解第2章 计算机中的数制和编码 2.2 带符号数的表示及运算带符号数的表示及运算 2.2.1 机器数与真值 日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号。对于一个字节型二进制数来说,D7位为符号位,D6D0位为数值位。在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小。

13、 把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”。机器数所表示的值称为该机器数的“真值”。 第2章 计算机中的数制和编码 2.2.2 机器数的表示方法 1. 原码设数x的原码记作x原,如机器字长为n,则原码定义如下: 0) 12(|2120111xxxxxnnn原 在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。 (2.2.1)第2章 计算机中的数制和编码 例如,当机器字长n=8时, +0原=00000000B -0原=27+0(按定义计算,下同)=10000000B +8原=00001000B-8原=27+8=10001000B +127原=

14、01111111B-127原=27+127=11111111B 当机器字长n=16时, +0原=0000000000000000B-0原=215+0=1000000000000000B +8原=0000000000001000B-8原=215+8=1000000000001000B +32767原=0111111111111111B-32767原=215+32767=1111111111111111B 第2章 计算机中的数制和编码 可以看出,原码表示数的范围是。8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;“0”的原码有两种表示法:000

15、00000表示+0,10000000表示-0。 第2章 计算机中的数制和编码 原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算,否则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法。 第2章 计算机中的数制和编码 2. 反码设数x的反码记作x反,如机器字长为n,则反码定义如下: 0) 12(|) 12(12011xxxxxn

16、nn反 正数的反码与其原码相同。例如,当机器字长n=8时: +0反=+0原=00000000B +127反=+127原=01111111B当机器字长n=16时: +8反=+8原=0000000000001000B +127反=+127原=0000000001111111B (2.2.2)第2章 计算机中的数制和编码 负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时: -0反=(28-1)-0=11111111B -127反=(28-1)-127=10000000B 反码表示数的范围是。8位二进制反码表示数的范围为-127+127,16位二进制反码表示数的

17、范围为-32767+32767;“0”的反码有两种表示法:00000000表示+0,11111111表示-0。 第2章 计算机中的数制和编码 3. 补码设数x的补码记作x补,如机器字长为n,则补码定义如下: 02|212011xxxxxnnn补正数的补码与其原码、反码相同。例如,当机器字长n=8时:+8补=+8反=+8原=00001000B+127补=+127反=+127原=01111111B当机器字长n=16时:+8补=+8反=+8原=0000000000001000B+127补=+127反=+127原=0000000001111111B (2.2.3)第2章 计算机中的数制和编码 负数的补

18、码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1;或在反码基础上末位加1。例如,当机器字长n=8时:-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8补=28-8=11111000B-127补=28-127=10000001B可以看出,补码表示数的范围是。8位二进制补码表示数的范围为-128+127,16位二进制反码表示数的范围为-32768+32767。8位二进制数的原码、反码和补码如表2.1所示。 第2章 计算机中的数制和编码 表表2.1 8位二进制数的原码、反码和补码表位二进制数的原码、反码和补码表 带 符

19、 号 数 二进制数 无符号十进制数 原码 反码 补码 0000 0000 0000 0001 0000 0010 0111 1110 0111 1111 1000 0000 1000 0001 1111 1101 1111 1110 1111 1111 0 1 2 126 127 128 129 253 254 255 +0 +1 +2 +126 +127 -0 -1 -125 -126 -127 +0 +1 +2 +126 +127 -127 -126 -2 -1 -0 +0 +1 +2 +126 +127 -128 -127 -3 -2 -1 第2章 计算机中的数制和编码 2.2.3 真值

20、与机器数之间的转换真值与机器数之间的转换 1原码转换为真值原码转换为真值 根据原码定义,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值。 例例2.8 已知x原=00011111B,y原=10011101B,求x和y x=+(026+025+124+123+122+121+120)=31 y=-(026+025+124+123+122+021+120)=-29 第2章 计算机中的数制和编码 2. 反码转换为真值 要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。 正数的原码是反码本身。 负数的原码可在反码基础上,符号位仍为1不变,数值位按

21、位取反。 例例2.9 已知x反=00001111B,y反=11100101B,求x和y解解 x原= x反=00001111B, x=+(026+025+024+123+122+121+120)=15 y原=10011010B, y=-(026+025+124+123+022+121+020)= -26 第2章 计算机中的数制和编码 3. 补码转换为真值同理,要求补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。负数的原码可在补码基础上再次求补,即:补补原xx(2.2.4)第2章 计算机中的数制和编码 例例2.10 已知x补=00001111B,y补=11100101B,求x和y解解

22、x原= x补=00001111B, x=+(026+025+024+123+122+121+120)=15 y原=y补补=10011011B, y=-(026+025+124+123+022+121+120)= -27 第2章 计算机中的数制和编码 2.2.4 补码的加减运算补码的加减运算 1. 补码加法补码加法 在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。 补码加法的运算规则为:即:两数补码的和等于两数和的补码。 补补补yxyx(2.2.5) 第2章 计算机中的数制和编码 例例2.11 已知

23、+51补=0011 0011B,+66补=0100 0010B, -51补=1100 1101B, -66补=1011 1110B 求求 +66补+51补=?+66补+-51补=?-66补+-51补=? 解解 二进制(补码)加法 十进制加法0100 0010 + 66补 + 66+)0011 0011 + 51补 +) + 510111 0101 +117补 +117 第2章 计算机中的数制和编码 由于+66补+51补=(+66)+(+55)补=01110101B结果为正,因此(+66)+(+55)原=(+66)+(+55)补=01110101B其真值为+117,计算结果正确。 二进制(补码)

24、加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 51补 +) 51 0000 1111 +15补 +151自动丢失第2章 计算机中的数制和编码 由于+66补+51补=(+66)+(55)补=0000111B结果为正,因此(+66)+(55)原=(+66)+(55)补=00001111其真值为+15,计算结果正确。 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 1100 1101 51补 +) 51 1000 1011 -117补 -1171自动丢失第2章 计算机中的数制和编码 由于66补+51补=10001011B=(66)+(5

25、5)补 结果为负,因此 (66)+(55)原=(66)+(55)补补=11110101B其真值为117,计算结果正确。 可以看出,不论被加数、加数是正数还是负数,只要直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码形式。但当计算结果超出补码表示范围时,结果就不正确了,这种情况称为溢出。 第2章 计算机中的数制和编码 2. 补码减法补码减法补码减法的运算规则为: 补补补补补yxyxyx(2.2.6) 第2章 计算机中的数制和编码 例例2.12 已知+51补=0011 0011B,+66补=0100 0010B51补=1100 1101B,66补=1011 1110

26、B求 +66补+51补=?66补 51补=? 解 +66补 +51补=+66补+51补 66补 51补=66补+51补 第2章 计算机中的数制和编码 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 51补 -) +51 0000 1111 +15补 +151自动丢失 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 0011 0011 +51补 -) -51 1111 0001 -15补 -15第2章 计算机中的数制和编码 可以看出,无论被减数、减数是正数还是负数,上述补码减法的规则都是正确的。同样,由最高位向更高位的进

27、位会自动丢失而不影响运算结果的正确性。 计算机中带符号数用补码表示时有如下优点: 可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路。 第2章 计算机中的数制和编码 无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。例如: 无符号数 带符号数 11100001 225 31补+) 00001101 +) 13 +) +13补 11101110 238 18补 若两操作数为无符号数时,计算结果为无符号数11101110B,其真值为238,结果正确;若两操作数为补码形式,计算结果也为补码形式,11101110B为18的补码,结果也是正确的。 第2章

28、计算机中的数制和编码 2.2.5 溢出及其判断方法溢出及其判断方法 1. 进位与溢出进位与溢出 所谓进位,是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围。 溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为n位的带符号数,它能表示的补码范围为2n1+2n11,如果运算结果超出此范围,就叫补码溢出,简称溢出。 第2章 计算机中的数制和编码 2. 溢出的判断方法溢出的判断方法 判断溢出的方法很多,常见的有: 通过参加运算的两个数的符号及运算结果的符号进行判断。 单符号位法。该方法通过符号位

29、和数值部分最高位的进位状态来判断结果是否溢出。 双符号位法,又称为变形补码法。它是通过运算结果的两个符号位的状态来判断结果是否溢出。 上述三种方法中,第一种方法仅适用于手工运算时对结果是否溢出的判断,其他两种方法在计算机中都有使用。限于篇幅,本节仅通过具体例子对第种方法做简要介绍。 第2章 计算机中的数制和编码 若符号位进位状态用CF来表示,当符号位向前有进位时,CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的。 (2.2.7) 若OF=1,说明结果溢出;若OF=0,则结果未

30、溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出。 DFCFOF第2章 计算机中的数制和编码 例2.13 设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? 解解 无符号数 带符号数 01000100 68 +68补+)01001000 +)72 +) +72补 10001100 140 +140补DF=1CF=0第2章 计算机中的数制和编码 若为无符号数,由于CF=0,说明结果未超出8位无符号数所能表达的数值范围(0255

31、),计算结果10001100B为无符号数,其真值为140,计算结果正确。 若为带符号数补码,由于=1,结果溢出;这里也可通过参加运算的两个数的符号及运算结果的符号进行判断,由于两操作数均为正数,而结果却为负数,因而结果溢出;+68和+72两数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围为128+127,结果超出该范围,因此结果是错误的。 第2章 计算机中的数制和编码 例例2.14 设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? 解解 无符号数 带符

32、号数 11101110 68 +68补+)11001000 +)72 +) +72补 10110110 140 +140补DF=1CF=01自动丢失 第2章 计算机中的数制和编码 若为无符号数,由于CF=1,说明结果超出8位无符号数所能表达的数值范围(0255)。两操作数11101110B和11001000B对应的无符号数分别为238和200,两数之和应为438255,因此,计算结果是错误的。 若为带符号数补码,由于=0,结果未溢出。两操作数11101110B和11001000B分别为18和56的补码,其结果应为74的补码形式,而计算结果10110110B正是74的补码,因此结果正确。 第2章

33、 计算机中的数制和编码 2.3 信信 息息 的的 编编 码码 2.3.1 二进制编码的十进制数二进制编码的十进制数(BCD编码编码) 虽然二进制数对计算机来说是最佳的数制,但是人们却不习惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进制系统的二进制编码的特殊形式,即将1位十进制的09这10个数字分别用4位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码。这就是二进制编码的十进制数,简称BCD码(Binary-Coded Decimal)。 第2章 计算机中的数制和编码 4位二进制数码有16种组合(00001111),原则上可任选其中的10个来分别代表十进制中09这10个数字

34、。但为了便于记忆,最常用的是8421 BCD码,这种编码从00001111这16种组合中选择前10个即00001001来分别代表十进制数码09,8、4、2、1分别是这种编码从高位到低位每位的权值。BCD码有两种形式,即压缩型BCD码和非压缩型BCD码。 第2章 计算机中的数制和编码 1压缩型压缩型BCD码码 压缩型BCD码用一个字节表示两位十进制数。例如,10000110B表示十进制数86。 2非压缩型非压缩型BCD码码 非压缩型BCD码用一个字节表示一位十进制数。高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数。 第2章 计算机中的数制和编码 表表2.2

35、8421 BCD 码部分编码表码部分编码表 十进制数 压缩型 BCD 码 非压缩型 BCD 码 1 2 3 9 10 11 19 20 21 00000001 00000010 00000011 00001001 00010000 00010001 00011001 00100000 00100001 00000001 00000010 00000011 00001001 00000001 00000000 00000001 00000001 00000001 00001001 00000010 00000000 00000010 00000001 第2章 计算机中的数制和编码 需要说明的是,

36、虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一组4位二进制数来表示,若将这种BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因此需要对计算结果进行必要的修正,才能使结果为正确的BCD码形式。详见本小节例2.17。 第2章 计算机中的数制和编码 例例2.15 十进制数与BCD数相互转换。 将十进制数69.81转换为压缩型BCD数: 69.81=(0110 1001.1000 0001)BCD 将B

37、CD数1000 1001.0110 1001转换为十进制数: (1000 1001.0110 1001)BCD=89.69 第2章 计算机中的数制和编码 例例2.16 设有变量x等于10010110B,当该变量分别为无符号数、原码、补码、压缩型BCD码时,试分别计算变量x所代表的数值大小。解解 无符号数:x=10010110B=127+026+025+124+023+122+121+020=150原码:x原=10010110B x= 026+025+124+023+122+121+020= 22补码:x补=10010110B x原=x补补=11101010B x= 126+125+024+12

38、3+022+121+020= 106 BCD码:xBCD=10010110B x=96第2章 计算机中的数制和编码 例2.17 (BCD码运算时的修正问题)用BCD码求38+49。 解 0011 100038的BCD码+) 0100 1001 49的BCD码 1000 0001 81的BCD码 计算结果1000 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错误的。其原因是,十进制数相加应该是“逢十进一”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位与十六进制数低位向高位进位的情况相当,是“逢十六进一”,所以当相加结果超过9时将比正确结果少6,

39、因此结果出错。解决办法是对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果。BCD数相加时,对二进制加法运算结果修正的规则如下: 第2章 计算机中的数制和编码 如果两个对应位BCD数相加的结果向高位无进位,且结果小于或等于9,则该位不需要修正;若得到的结果大于9而小于16,则该位需要加6修正。 如果两个对应位BCD数相加的结果向高位有进位(结果大于或等于16),则该位需要进行加6修正。 因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的BCD码结果。有关BCD运算结果的调整指令将在第4章“80 x86指

40、令系统”中介绍。 第2章 计算机中的数制和编码 2.3.2 ASCII字符编码字符编码 所谓字符,是指数字、字母以及其他一些符号的总称。 现代计算机不仅用于处理数值领域的问题,而且要处理大量的非数值领域的问题。这样一来,必然需要计算机能对数字、字母、文字以及其他一些符号进行识别和处理,而计算机只能处理二进制数,因此,通过输入/输出设备进行人机交换信息时使用的各种字符也必须按某种规则,用二进制数码0和1来编码,计算机才能进行识别与处理。 第2章 计算机中的数制和编码 目前,国际上使用的字符编码系统有许多种。在微机、通信设备和仪器仪表中广泛使用的是ASCII码(American Standard

41、Code for Information Interchange)美国标准信息交换码。ASCII码用一个字节来表示一个字符,采用7位二进制代码来对字符进行编码,最高位一般用做校验位。7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。 该表的使用方法读者应熟练掌握。如数字“1”的ASCII码值为31H,字母“A”的ASCII码值为41H,符号“?”的ASCII码值为3FH等。 第2章 计算机中的数制和编码 表表2.3 美国标准信息交换码美国标准信息交换码ASCII(7位代码位代码) 0 1 2 3 4 5 6 7 高三位 b6b5b4 低四位 b3b2b1b0 000 001 010 011 100 101 110 111 P 、 NUL DLE SP 0 p 1 0001 SOH DC1 ! 1 A Q a q 2 0010 STX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论