《(7)--[1.6] 微机的数制与编码单片机设计及应用.ppt》由会员分享,可在线阅读,更多相关《(7)--[1.6] 微机的数制与编码单片机设计及应用.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.6.1.1 1.6.1.1 进位计数制进位计数制1.6 微机的数制与编码1.6.1 计算机常用的数制及其转换 十进制十进制 (D D)Decimal system Decimal system(scalescale)二进制二进制 (B B)Binary systemBinary system 八进制八进制 (O O)Octonary systemOctonary system 十六进制十六进制(H H)Hexadecimal systemHexadecimal system1.6 微机的数制与编码一、十进制数主要特点(1 1)有十个不同的数字符号:)有十个不同的数字符号:0 0,1 1,2
2、 2,9 9。(2 2)遵循)遵循“逢十进一逢十进一”原则。原则。一般地,任意一个十进制数一般地,任意一个十进制数N N都可采用按权展开表示为都可采用按权展开表示为1.6 微机的数制与编码二、二、八、十六进制数主要特点对于二进制,对于二进制,R=2R=2,K K为为0 0或或1 1,逢二进一。,逢二进一。1.6 微机的数制与编码二、二、八、十六进制数主要特点对于十六进制,对于十六进制,R=16R=16,K K为为0 09 9、A A、B B、C C、D D、E E、F F共共1616个数码个数码中的任意一个,逢十六进一。中的任意一个,逢十六进一。1.6 微机的数制与编码二、二、八、十六进制数主
3、要特点综上可见,上述几种进位制有以下共同点:综上可见,上述几种进位制有以下共同点:(1 1)每种进位制都有一个确定的基数)每种进位制都有一个确定的基数R R,每一位的系,每一位的系数数K K有有R R种可能的取值。种可能的取值。(2 2)按)按“逢逢R R进一进一”方式计数,在混合小数中,小方式计数,在混合小数中,小数点左移一位相当于乘以数点左移一位相当于乘以R R,右移一位相当于除以,右移一位相当于除以R R。1.6.1.2 数制间的转换三种数制间的转换方法示意图如图三种数制间的转换方法示意图如图1-221-22所示。所示。一、二、八、十六进制数转换为十进制数一、二、八、十六进制数转换为十进
4、制数 这种转换只需将二、八、十六进制数按权展开。例如:(110.01)2=122+121+020+02-1+12-2=(6.25)10(175)8=182+781+580=(125)10 (B2C)16=11162+2161+12160 =(2860)101.6.1.2 数制间的转换二、十进制数转换成二、八、十六进制数二、十进制数转换成二、八、十六进制数十进制数转换成二、八、十六进制数时,需要把整数部分与小数部分分别转换,然后拼接起来。例如,把十进制数125、0.8125、125.8125转换为二进制数方法如下:1.6.1.2 数制间的转换三、二进制与八进制、十六进制的相互转换三、二进制与八进
5、制、十六进制的相互转换 由于8=23,16=24 因此,八进制或十六进制要转换成二进制,只需将八进制数或十六进制数分别用对应的三位或四位二进制数表示即可。例如 (101101.101001)2=(55.51)8=55.51Q (00101101.10100100)2=(2D.A4)16=2D.A4H1.6.2 计算机中带符号数的表示1.6.2.1 机器数与真值机器数是一个数在计算机中的表示形式,一个机器数所表示的数值称为真值。1.6.2 计算机中带符号数的表示1.6.2.1 机器数与真值对于无符号数,机器数与真值相同。对于n位字长的计算机来说,表示无符号的整数范围为02n-1,例如,8位二进制
6、无符号数表示的范围为00000000B11111111B(即0255)。1.6.2 计算机中带符号数的表示1.6.2.1 机器数与真值对于带符号的数,在计算机中,通常将一个数的最高位作为符号位,最高位为0,表示符号位为正;最高位为1,表示符号位为负。例如 真值 机器数(原码)+18 =0 0010010 B 18 =1 0010010 B1.6.2.2 带符号数机器数的3种表示方法对于带符号数,机器数常用的表示方法有原码、反码、补码3种。1.6.2.2 带符号数机器数的3种表示方法综上所述,可以得出以下结论:综上所述,可以得出以下结论:(1)原码、反码、补码的最高位都是表示符号位。符号位为0时
7、,表示真值为正数,其余位是真值;符号位为1时,表示真值为负,其余位除原码外不再是真值。对于反码,需按位取反才是真值;对于补码,则需按位取反加1才是真值。(2)对于正数,三种编码都是一样的,即 ;1.6.2.2 带符号数机器数的3种表示方法对于负数,三种编码互不相同。所以,原码、反码、补码本质上是用来解决负数在机器中表示的三种不同的编码方法。1.6.2.2 带符号数机器数的3种表示方法(3)二进制位数相同的原码、反码、补码所能表示的数值范围不完全相同。对于8位二进制带符号数,它们表示的真值、机器数范围分别为:原码:真值为-127+127,机器数为11111111B 01111111B(即FFH7
8、FH)反码:真值为-127+127,机器数为10000000B01111111B(即80H7FH)补码:真值为-128+127,机器数为10000000B01111111B(即80H7FH)而8位二进制无符号数的真值、机器数范围分别为:真值为 0255机器数为 00000000B11111111B(即00HFFH)1.6.2.2 带符号数机器数的3种表示方法(4)微机基本上都是以补码作为机器码,其原因是补码的加减法运算简单,减法运算可变为加法运算,可省掉减法器电路;而且它是符号位与数值位一起参加运算,运算后能自动获得正确结果。二进制数的运算二进制数的运算 算术运算 无符号数 逻辑运算 有符号数
9、 算术运算 加法运算 减法运算 乘法运算 除法运算算术运算 逻辑运算与()或()非()异或()1.6.2.3 二进制数的加减运算计算机把机器数均当作无符号数进行运算,即符号位也参与运算。运算的结果要根据符号标志位(如进位和溢出等)来判别正确与否。一、无符号数的运算及进位概念(1 1)两个无符号数相加。)两个无符号数相加。若两个加数的和超过其位数所允许的最大值(上限)时,最高位就会产生进位,CY=1;否则,无进位,CY=0,结果正确。例如:下面两个8位无符号二进制数相加。127+16=7F H+10 H 127+160=7F H+A0H 0111 1111 B 0111 1111 B +0001
10、 0000 B +1010 0000 B 0 1000 1111 B 1 0001 1111 BCY=0结果正确CY=1结果错误,但如果把进位CY作为最高位,则结果正确1.6.2.3 二进制数的加减运算(2 2)两个无符号数相减。)两个无符号数相减。若被减数小于减数,相减结果小于所允许的最小值0(下限)时,最高位就会产生借位,CY=1;若被减数大于或等于减数,无借位,CY=0,结果正确。例如:下面两个8位无符号二进制数相减。19210=C0 H0A H 10192=0A HC0 H 1100 0000 B 0000 1010 B -0000 1010 B1100 0000 B 0 1011 0
11、110 B 1 0100 1010B CY=0,结果B6 H=182正确;CY=1,结果4AH(即74)错误,但如果把进位CY作为最高位,则结果=B6H=182就正确了。1.6.2.3 二进制数的加减运算1.6.2.3 二进制数的加减运算 由此可见,对无符号数进行加法或减法运算,其结果的符号用进位CY来判别:CY=0(无进位或借位),结果正确;CY=1(有进位或借位),结果错误,但若把CY记作最高位,结果就正确了。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(1 1)补码的加减法运算。)补码的加减法运算。微机中带符号数采用补码形式存放和运算,其运算结果自然也是补码。补码加
12、减运算的运算特点是:符号位与数字位一起参加运算,并且自动获得结果(包括符号位与数字位)。设X、Y是两个任意的二进制数,补码的加减法运算规则为:XY补=X补+Y补 该式说明,无论加法还是减法运算,都可由补码的加法运算实现,运算结果(和或差)也以补码表示。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算采用补码运算可以将减法变成加法运算,在微处理器中只需加法器电路就可以实现加法、减法运算。例如,若X=33,Y=45,采用8位补码计算X+Y和XY。由于X补=00100001B,Y补=00101101B,Y补=11010011B,则X+Y补=X补+Y补=01001110B,XY补=X
13、补+Y补=11110100B。因此,X+Y=X+Y补补=01001110B=+78,XY=XY补补=10001100B=12。1.6.2.3 二进制数的加减运算补码表示计算机中的有符号数优点明显。补码表示计算机中的有符号数优点明显。1)负数的补码对应正数的补码之间的转换可用同一方法求补运算实现,因而可简化硬件。2)可将减法变为加法运算,从而省去减法器电路。3)有符号数和无符号数的加法运算可用同一加法器电路完成,结果都是正确的。例如,两个内存单位的内容分别为00010010和11001110,无论它们代表有符号数补码还是无符号数二进制码,运算结果都是正确的。二、带符号数的补码运算及溢出概念1.6
14、.2.3 二进制数的加减运算(2 2)运算溢出的判断方法)运算溢出的判断方法。由于计算机的字长有一定限制,因此一个带符号数是有一定范围的。8位字长的二进制数补码表示带符号数的范围为128+127,n位字长补码表示的范围为+2n12n。当运算结果超过这个表达范围时,便产生溢出。在溢出时运算结果会出错。显然,只有在同符号数相加或者异符号数相减的情况下,才有可能产生溢出。那么是否有一个便于操作的方法来判断是否产生溢出呢?例1:00001111 B (+15)+01110000 B(+112)01111111 B(+127)例2:10001010 B(-118)+01111001 B(+121)000
15、00011 B(+3)此例中,CY=CY1=0无溢出,OV=0此例中,CY=CY-1=1,无有溢出,OV=0例3:01111110 B(+126)+00000101 B(+5)10000011 B(-125)此例中,CY=0,CY-1=1,CYCY-1,有溢出,OV=1例4:10000100 B(-124)+11111000 B(-8)01111100 B(+124)此例中,CY=1,CY1=0,CYCY1,有溢出,OV=1 综合以上4个例子的情况,可用下述逻辑表达式进行溢出OV判断OV=CYCY1 “双高位法”二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与
16、溢出的区别)进位与溢出的区别。进位与溢出是两个不同概念。进位CY是指不考虑是否有符号,按二进制位依次相加后最高位有进位;而溢出是指考虑有符号,当两个同符号数相加结果改变符号时出现溢出OV错误。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与溢出的区别)进位与溢出的区别。CY是指两个操作数在进行算术运算后,最高位(对于8位操作为D7位,对于16位操作为D15位)是否出现进位或借位的情况,有进位或借位,CY置1,否则置0;二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与溢出的区别)进位与溢出的区别。OV是反映带符号数运算结果是否超
17、过机器所能表示的数值范围的情况。对于8位运算,数值范围为128+127;对于16位运算,数值范围为32768+32767。超过范围,称为“溢出”,OV置1。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与溢出的区别)进位与溢出的区别。对于同一运算,OV和CY两个标志不一定同时发生,例3中OV=1、CY=0,例2中CY=1、OV=0。当然,两个标志也可能出现相同的情况,例如,例1中OV=0、CY=0,而例4中CY=1、OV=1。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与溢出的区别)进位与溢出的区别。CY用于表示无符号数运算
18、结果是否超出范围,即使CY=1,运算结果仍然正确;OV用于表示有符号数运算结果是否超出范围,若CV=1,则运算结果已经不正确。二、带符号数的补码运算及溢出概念1.6.2.3 二进制数的加减运算(3 3)进位与溢出的区别)进位与溢出的区别。对于无符号数,不存在溢出的问题,它的进位就相当于符号数中的溢出;而对于带符号数,不存在进位的问题。1.6.2.5 定点数与浮点数根据小数点位置是否固定,数的表示方法可分为定点表示和浮点表示,相应的机器数就叫定点数和浮点数。定点数就是小数点在数中的位置是固定不变的而浮点数则是小数点的位置是浮动的1.6.2.5 定点数与浮点数 对于任意一个二进制数X,都可表示成:
19、X=2PSS表示全部有效数字,称为数X的尾数;P为数X的阶码,它指明了小数点的位置;2是阶码的底。S和P均为用二进制表示的数,它们可正可负。阶码常用补码表示法,尾数常为原码表示的纯小数。当P值可变时,表示是浮点数。1.6.2.5 定点数与浮点数(2)(2)浮点浮点数数 浮点数的格式、字长因机器而异。浮点数一般由4个字段组成,其格式如图1-26所示,其中阶码一般用补码定点整数表示,尾数一般用补码或原码定点小数表示。1.6.2.5 定点数与浮点数(2)(2)浮点浮点数数浮点数的实际格式多种多样。如80486的浮点数格式就不是按上述格式存放4个字段的,而是将数符Sf置于整个浮点数的最高位(阶码部分的
20、前面),且尾数和阶码部分有其与众不同的约定。为保证不损失有效数字,一般还对尾数进行规格化处理,即保证尾数的最高位是1,实际大小通过阶码进行调整。例如,某计算机用32位表示一个浮点数,其格式如图1-27所示。图1-27 32位浮点数格式其中,阶码部分为8位补码定点整数,尾数部分为24位补码定点小数(规格化)。下面来求十进制数258.75的机器数。(258.75)10=(100000010.11)2=(0.10000001011)29 =(1.10000001011000000000000)原2(00001001)原 =(1.01111110101000000000000)补2(00001001)
21、补所以,258.75在该计算机中的浮点表示为 00001001101111110101000000000000。显然,它比32位定点数表示的数值范围(最大为2312311)要大得多。一般对于位数相同的计算机,浮点法能表示的范围比定点法大,这也正是浮点数表示优于定点数表示的突出优点之一。按照这一浮点数格式,可计算出它所能表示的数值范围为1.6.3 计算机常用的编码计算机除了用于数值计算外,还要进行大量的文字信息处理,也就是要对表达各种文字信息的符号进行加工。目前,计算机中最常用的两种编码是二十进制编码(BCD码)和美国信息交换标准代码(ASCII码)。1.6.3.1 BCD码十进制数不能直接在计
22、算机中进行处理,必须用二进制为它编码,这样就产生了二进制编码的十进制数,简称BCD(Binary Coded Decimal)码。这种编码法分别将每位十进制数字编成4位二进制代码。1.6.3.1 BCD码4位二进制数可以表示16种不同的状态,所以用以表示十进制数时要丢掉6种状态。可以使用不同的方法来处理这些数码,因而产生了各种不同的BCD码,但最常用的是8421BCD码或称标准BCD码,它是将十六进制数的AF 放弃不用。例如:89=(1000 1001)BCD 105=(0001 0000 0101)BCD 2012=(0010 0000 0001 0010)BCD 0.764=(0.0111
23、 0110 0100)BCD十进制数十进制数标准标准BCD码码二进制数二进制数十进制数十进制数标准标准BCD码码二进制数二进制数000000000810001000100010001910011001200100010100001 00001010300110011110001 00011011401000100120001 00101100501010101150001 01011111601100110630110 0011111111701110111941001 01001011110表1-11-1 标准BCDBCD码与十进制数字的编码关系 可见,BCD码是很容易编制的,而且用它来表示
24、十进制数也比较直观,但是一定要区别于二进制数,两者表征的数值完全不同,例如,(0010 0000 0000 0101.1001)BCD=2005.9,(0010 0000 0000 0101.100l)2=8197.5625。1.6.3.1 BCD码BCD码的不足之处是抛弃了二进制中6/16的信息位不使用,非压缩的BCD码浪费更大,在相同的二进制位数条件下,BCD能表示的数值范围变窄。1.6.3.1 BCD码 1.6.3.1 BCD码4位二进制数可以表示16种不同的状态,所以用以表示十进制数时要丢掉6种状态。可以使用不同的方法来处理这些数码,因而产生了各种不同的BCD码,但最常用的是8421B
25、CD码或称标准BCD码,它是将十六进制数的AF 放弃不用。例如:89=(1000 1001)BCD 105=(0001 0000 0101)BCD 2012=(0010 0000 0001 0010)BCD 0.764=(0.0111 0110 0100)BCD 1.6.3.1 BCD码 (1)BCD (1)BCD码表示的两种形式码表示的两种形式BCD码表示十进制数分为压缩型(也称组合型)和非压缩型(也称非压缩)两种码。其中 1.6.3.1 BCD码压缩型BCD码用4位二进制数表示1位十进制数,这样8位二进制数就能表示2位十进制数;而非压缩型BCD码用8位二进制数表示1位十进制数,它的低4位表
26、示1位十进制数,高4位总是0000。1.6.3.1 BCD码例如,94的紧缩型BCD 码是 1001 0100B=94H 94的非压缩型BCD码是 0000 1001 0000 0100B=0904H 1.6.3.1 BCD码压缩型BCD码比非压缩型BCD码能节省一半存储空间,但由于BCD运算需借用二进制运算电路进行,因此直接运算的结果一般是错误的,需要进行调整才能得到正确的结果。压缩型BCD码运算调整规则比非压缩型BCD码要复杂,它需对低4位和高4位的结果分别进行调整。1.6.3.1 BCD码(2)BCD(2)BCD数的加减运算数的加减运算BCD码的运算规则是:BCD码是十进制数,而运算器对
27、数据作加减运算时,都是按二进制运算规则进行处理的。这样,当将BCD码传送给运算器进行运算时,其结果需要修正。1.6.3.1 BCD码(2)BCD(2)BCD数的加减运算数的加减运算修正的规则是:当两个BCD码相加或相减时,如果和等于或小于1001(即十六进制数9),不需要修正;如果相加或相减的结果在10101111(即十六进制数0AH0FH)之间,则需加6或减6进行修正;如果相加或相减时,本位产生了进位或借位,也需加6或减6进行修正。这种调整规则也称“超超9 9补补6 6补偿补偿”。1.6.3.1 BCD码例如,计算18+19 0001 1000 +0001 1001 0011 0001=31
28、+0000 0110 6 0011 0111 37 结果正确又例如,计算28-190010 1000 28-0001 1001 19 0000 1111 F -0000 0110 6 0000 1001 9 结果正确结果正确 1.6.3.2 ASCII码ASCII码是美国信息交换标准代码的简称,它使用指定的7位或8位二进制数组合来表示128或256种可能的字符。1.6.3.2 ASCII码标准ASCII的最高位(b7)一般为0或作为奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验时,最高位b7的取值应使得8位ASCII码中1的个数为
29、奇数;偶校验时,最高位b7的取值应使得8位ASCII码中1的个数为偶数。例如:“8”的奇校验ASCII码为00111000B,偶校验ASCII码为10111000B 1.6.3.2 ASCII码后128个称为扩展ASCII码,目前许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第8位用于确定附加的 128 个特殊符号字符、外来语字母和图形符号。注意,数字09的ASCII码与非压缩BCD码表示很相似,两者的低4位完全相同,都用00001001表示09;两者的差别仅在高4位,ASCII码为0011,而非压缩BCD码为0000。DecHexASCIIDecH
30、exASCIIDecHexASCIIDecHexASCII606ACK3826&6743C9963c707BEL(beep)3927(apost)6844D10064d808BS(back sp)4028(6945E10165e909HT(tab)4129)7046F10266f100A LF(linefeed)422A*7147G10367g110BVT432B+7248H10468h120CFF442C,(comma)7349110569i130DCR(reurn)452D-(dash)744AJ1066Aj140ESO462E.(period)754BK1076Bk150FSI472F/
31、764CL1086Cl1610DLE48300774DM1096DmDecHexASCIIDecHexASCIIDecHexASCIIDecHexASCII000NUL3220SP(space)303ETX3523#101SOH3321!404EOT3624$202STX3422“(quote)505ENQ3725%表表1-21-2 标标 准准 ASCII ASCII 码码 字字 符符 表表1711DC149311784EN1106En1812DC250322794FO1106Eo1913DC3513338050P11270p2014DC4523448151Q11371q2115NAK533558252R11472r2216SYN543668353S11573s2317ETB553778454T11674t2418CAN563888555U11775u2519EM573998656V11876v261ASUB583A:8757W11977w271BESC593B;8858X12078x281CFS603C915B1237B311FUS633F?925C1247C|64409660(grave)935D1257D6541A9761a945E1267E6642B9862b955F_(under)1277FDEL(delete)续表续表
限制150内