资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第2章 计算机中的数制和编码,第2章 计算机中的数制和编码,2.1 无符号数的表示及运算,2.2 带符号数的表示及运算,2.3 信息的编码,2.4 数的定点与浮点表示法,11/27/2024,1,2.1,无符号数的表示及运算,2.1.1 无符号数的表示方法,1. 十进制数的表示方法,十进制计数法的特点是:, 逢十进一;, 使用10个数字符号(0,1,2,9)的不同组合来表示一个十进制数;, 以后缀D或d表示十进制数(Decimal),,但该后缀可以省略,。,11/27/2024,2,任何一个十进制数可表示为:,式中:,m,表示小数位的位数,,n,表示整数位的位数,,D,i,为第,i,位上的数符(可以是0,9十个数字符号中的任一个)。,例2.1,138.5(D)=,11/27/2024,3,2.,二进制数的表示方法,二进制计数法的特点是:, 逢二进一;, 使用2个数字符号(0,1)的不同组合来表示一个二进制数;, 以后缀B或b表示二进制数(Binary)。,任何一个二进制数可表示为:,式中:,m,为小数位的位数,,n,为整数位的位数,,B,i,为第i位上的数符(0或1)。,例2.2 1101.11B=,11/27/2024,4,3. 十六进制数的表示法,十六进制计数法的特点是:, 逢十六进一;, 使用16个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中A,F 依次表示10,15;, 以后缀H或h表示十六进制数(Hexadecimal)。,11/27/2024,5,任何一个十六进制数可表示为:,式中:,m,为小数位的位数,,n,为整数位的位数,,H,i,为第i位上的数符(可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个)。,例2.3 0E5AD.BFH =,11/27/2024,6,一般来说,对于基数为的任一数可用多项式表示为:,(2.1.4),式中:,X,为基数,表示X进制;,i,为位序号;,m,为小数部分位数;n为整数部分的位数;,k,i,为第i位上的数值,可以为0,1,2,X,-1共,X,个数字符号中任一个;,X,i,为第i位的权。,11/27/2024,7,2.1.2,各种数制的相互转换,1任意进制数转换为十进制数,二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式,和各位按权展开(即该位的数值乘于该位的权)求和即可。,11/27/2024,8,将整数部分不断除以2,记下每次得到的余数,直到商为零;余数倒排,即最后得到的余数排在最高位,第一个余数排在最低位。例如将十进制数13转换成二进制数:,2 1 3 余数,2 6 1,2 3 0,2 1 1,0 1,13D=1101B,2. 十进制数转换成二进制数,1)整数部分的转换(,除2取余法,),11/27/2024,9,小数部分转换:乘2取整,顺序排列得到的整数。例如将0.8125转换成二进制数:,0.8125,整数 2,1 .6250, 2,1 .25, 2,0 .50, 2,1 .00,0.8125D=0.1101B(有时会有转换误差 ,如0.3D),返回数制转换,2) 小数部分的转换(,乘2取整法,),11/27/2024,10,显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。,11/27/2024,11,例2.4 将13.75转换为二进制数。,分别将整数和小数部分进行转换:,整数部分:13=1101B,小数部分:0.75=0.11B,因此,13.75=1101.11B,11/27/2024,12,例2.5 将28.75转换为十六进制数,整数部分:28=1CH,小数部分:0.7516=12.0,,B,-1,=CH,小数部分已为0,停止计算。,因此,28.75=1C.CH,11/27/2024,13,3,二进制数与十六进制数之间的转换,因为2,4,=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。,将二进制数转换为十六进制数的方法,:,以小数点为界,,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。,将十六进制数转换为二进制数的方法:,直接将每一位十六进制数写成其对应的四位二进制数。,11/27/2024,14,例2.6,1101110.01011B=0110,1110.0101,1000B=6E.58H,2F.1BH=10 1111.0001 1011B,11/27/2024,15,课堂练习,1、将十进制数218.8125转换为二进制数和十六进制数。,2、将二进制数10111100.111B转换为十进制数和十六进制数。,11/27/2024,16,2.1.3 二进制数的运算,1. 二进制数的算术运算,(1),加:,0+0=0 0+1=1 1+0=1 1+1=0(进1),(2) 减:,0-0=0 1-1=0 1-0=1 0-1=1(借位),(3),乘:,0,0=0 0,1=0 1,0=0 1,1=1,(4),除: 二进制除法是乘法的逆运算。,11/27/2024,17,例:完成下列数的加减运算。,1、1101+1011,2、11101110-10111010,3、7A6C+56DF,11/27/2024,18,2. 二进制数的逻辑运算,(1),“与“运算(AND). “与”运算又称逻辑乘,可用符号“,”或“,”表示。运算规则如下:,0,0=0 0,1=0 1,0=0 1,1=1,可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。,(2),“或”运算(OR),“或”运算又称逻辑加,可用符号“,”或“+”表示。运算规则如下:,0,0=0 0,1=1 1,0=1 1,1=1,可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。,11/27/2024,19,(3),“非”运算(NOT),变量的“非”运算结果用表示。逻辑“非”运算规则如下:,(4),“异或”运算(XOR),“异或”运算可用符号“”表示。运算规则如下:,可以看出,两变量只要不同,“异或”运算的结果就为“1”。,11/27/2024,20,(4) “异或”运算(XOR),“异或”运算可用符号“”表示。运算规则如下:,可以看出,两变量只要不同,“异或”运算的结果就为“1”。,11/27/2024,21,例 2.7,A=11110101B, B=00110000B,求,解,11/27/2024,22,作 业,课本P30:1.(4),2.(4),3.(2),4.(2),5(全部),* 完成下列数的运算。,(1)、 7A6C+56DF,(2)、7A6C-56DF,11/27/2024,23,2.2 带符号数的表示及运算,2.2.1 机器数与真值,在计算机中,为了区别正数和负数,,通常用二进制数的最高位表示数的符号。,对于一个字节型二进制数来说,,D,7,位为符号位,,D,6,D,0,位为数值位。在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小。,把一个数及其符号位在机器中的一组二进制数表示形式,称为“,机器数,”。,机器数所表示的值称为该机器数的“,真值,”。,11/27/2024,24,1.,原码,正数原码:符号位为0,数值位照抄。,负数原码:符号位为1,数值位照抄。,例:(1)、当机器字长,n,=8时,,X=+25=+00011001B X,原,=,0,0011001B,X= -25= -00011001B X,原,=,1,0011001B,(2)、 当机器字长,n,=16时,,X=+25=+0000000000011001B,X,原,=,0,000000000011001B,X= -25= -0000000000011001B,X,原,=,1,000000000011001B,2.2.2 机器数的表示方法(原码、反码、补码),11/27/2024,25,注:,1、原码表示数的范围是-(2,n-1,-1)+ (2,n-1,-1) 。8位二进制原码表示数的范围为-127,+127,16位二进制原码表示数的范围为-32767,+32767。,2、“0”的原码有两种表示法:,+0,原,=00000000, -0,原,=10000000。,原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。按这种运算方法设计的算术运算电路很复杂。,11/27/2024,26,2、,反码,正数反码:符号位为0,数值位照抄。,负数反码:符号位为1,数值位取反。,例: (1)、当机器字长,n,=8时,,X=+25=+00011001B X,反,=,0,0011001B,X= -25= -00011001B X,反,=,1,1100110,B,(2)、当机器字长,n,=16时,,X=+25=+0000000000011001B,X,反,=,0,000000000011001B,X= -25= -0000000000011001B,X,反,=,1,B,11/27/2024,27,反码表示数的范围是-(2,n-1,-1)+ (2,n-1,-1) 。8位二进制反码表示数的范围为-127,+127,16位二进制反码表示数的范围为-32767,+32767;,“0”的反码有两种表示法:,+0,反,=00000000, -0,反,=11111111。,11/27/2024,28,3. 补码,为了将减法运算变成加法来做,有符号数在计算机内一律采用补码表示。,正数补码:符号位为0,数值位照抄。,负数补码:符号位为1,数值位取反加一。,例:X=+25=+00011001B X,补,=00011001B,X= -25= -00011001B,X,反,=,1,1100110,B,X,补,=,1,1100111,B,当机器字长,n,=16时(同上,略),11/27/2024,29,可以看出,补码表示数的范围是,-2,n-1,+ (2,n-1,-1) 。 8位二进制补码表示数的范围为,-128,+127,16位二进制反码表示数的范围为-32768,+32767。,“0”的补码只有,一种,表示法:,+0,补,= -0,补,= 00000000。,-128,补,=10000000 -0,补,11/27/2024,30,真值与机器数之间的转换,一原码转换为真值,根据原码定义,,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值。,例2.8 已知,x,原,=00011111B,,y,原,=10011101B,求,x,和,y,x=+(0,2,6,+0,2,5,+1,2,4,+1,2,3,+1,2,2,+1,2,1,+1,2,0,)=31,y=-(0,2,6,+0,2,5,+1,2,4,+1,2,3,+1,2,2,+0,2,1,+1,2,0,)=-29,11/27/2024,31,2.,反码转换为真值,要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。,正数的原码是反码本身。,负数的原码可在反码基础上,符号位仍为1不变,数值位按位取反。,例2.9 已知,x,反,=00001111B,,y,反,=11100101B,求,x,和,y。,解 ,x,原,= ,x,反,=00001111B,x,=+(0,2,6,+0,2,5,+0,2,4,+1,2,3,+1,2,2,+1,2,1,+1,2,0,)=15,y,原,=10011010B,,y,=-(0,2,6,+0,2,5,+1,2,4,+1,2,3,+0,2,2,+1,2,1,+0,2,0,)= -26,11/27/2024,32,3.,补码转换为真值,同理,要求补码的真值,也要先求出补码对应的原码。,正数的原码与补码相同。,负数的原码可在补码基础上再次求补,即:,11/27/2024,33,例2.10 已知,x,补,=00001111B,,y,补,=11100101B,求,x,和,y,解 ,x,原,= ,x,补,=,0,0001111B,,x,=+(0,2,6,+0,2,5,+0,2,4,+1,2,3,+1,2,2,+1,2,1,+1,2,0,)=15,y,原,=,y,补,补,=,1,0011011B,,y,=-(0,2,6,+0,2,5,+1,2,4,+1,2,3,+0,2,2,+1,2,1,+1,2,0,)= -27,11/27/2024,34,原码、反码和补码的小结,1)正数的原码、反码、补码相同;负数的原码、反码、补码各不相同,但符号位都是1。反之,若符号位是1,则不管是原码、反码还是补码,都代表负数。,2)设字长为八位,原码、反码的表数范围为-127+127,补码的表数范围为-128+127。,3)已知某负数的补码,求该负数的真值,方法如下:,符号位不动,其余位求反加一,得到的是该负数的原码;,根据原码即可写出该负数的真值。,例:X补=11111100B,X原=10000011B+1=10000100B,X= -0000100= - 4,11/27/2024,35,二进制数,无符号十进制数,带 符 号 数,原码,反码,补码,0000 0000,0000 0001,0000 0010,0111 1110,0111 1111,1000 0000,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.1 8位二进制数的原码、反码和补码表,11/27/2024,36,课堂练习,1、若X,补,=1000 0000,则X的真值是多少?“-0”的补码是多少?,2、设X=1011 1011,求X为(1)无符号数、(2)原码、 (3)反码、(4)补码时,分别表示的值(十进制)是多少?,答:-128 ,00000000,答:(1)、=12,7,+ 02,6,+12,5,+12,4,+12,3,+02,2,+12,1,+12,0,= 187,(2)、=-(02,6,+12,5,+12,4,+12,3,+02,2,+12,1,+12,0),=-59,(3)、X,原,=1100 0100,=-(12,6,+12,2),=-68,(4)、 X,原,=X,补,补,=1100 0101,=-(12,6,+12,2,+12,0,)=-69,注意:同一个二进制数,当认为它是不同形式的编码时,它所代,表的数值是不同的。,11/27/2024,37,-128,补,=? -0,补,=?,+0 ,原,=00000000,-0 ,原,10000000。,+0 ,反,=00000000,-0 ,反,=11111111。,0 ,补,=00000000,原码定义,:,反码定义,:,补码定义,:,即,:,规定,:-128,补,=10000000,,,-0,补,=+0,补,= 00000000,返回,11/27/2024,38,2.2.4 补码的加减运算,1. 补码加法,在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。其运算特点是:,符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。,补码加法的运算规则为:,即:,两数补码的和等于两数和的补码,。,(2.2.5),11/27/2024,39,例,2.11,已知,+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,补,+) + 51,0111 0101 +117,补,+117,即:将两个加数(正数)都化为补码进行加法运算,所得到的补码再化为真值,运算的结果是正确的。,运算规则验证,11/27/2024,40,二进制(补码)加法 十进制加法,0100 0010 + 66,补,+66,+) 1100 1101 51,补,+) 51,0000 1111 +15,补,+15,1,自动丢失,即:将一正一负的两个加数都化为补码进行加法运算,所得到的补码再化为真值,运算的结果同样是正确的。,运算规则验证,11/27/2024,41,二进制(补码)加法 十进制加法,1011 1110 - 66,补,-66,+) 1100 1101 51,补,+) 51,1000 1011 -117,补,-117,1,自动丢失,即:将两个均为负的加数都化为补码进行加法运算,所得到的补码再化为真值,运算的结果同样是正确的。,可以看出,不论被加数、加数是正数还是负数,只要直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码形式。但当计算结果超出补码表示范围时,结果就不正确了,这种情况称为,溢出,。,运算规则验证,11/27/2024,42,2.,补码减法,补码减法的运算规则为:,(2.2.6),11/27/2024,43,例2.12,已知,+51,补,=0011 0011B,,,+66,补,=0100 0010B,51,补,=1100 1101B,,,66,补,=1011 1110B,求,+66,补,+51,补,=,?,66,补,51,补,=,?,解,+66,补, +51,补,=+66,补,+51,补,66,补, 51,补,=66,补,+51,补,运算规则验证,11/27/2024,44,二进制(补码)加法 十进制加法,0100 0010 + 66,补,+66,+) 1100 1101 51,补,-) +51,0000 1111 +15,补,+15,1,自动丢失,二进制(补码)加法 十进制加法,1011 1110 - 66,补,-66,+) 0011 0011 +51,补,-) -51,1111 0001 -15,补,-15,可以看出,无论被减数、减数是正数还是负数,上述补码减法的规则都是正确的。,运算规则验证,11/27/2024,45,计算机中带符号数用补码表示时有如下优点:, 利用补码的方法,可以将减法运算变为加法运算,因此加法和减法运算可使用同一个运算器(加法器)来实现;无符号数和有符号数的运算也可使用同一套电路来实现。简化了电路。,事实上,乘法运算可以用”加法+右移”来实现,除法运算是乘法运算的逆运算,可以用”减法(加法)+左移”来实现,也就是说乘法和除法运算均可用加法器和移位寄存器来实现。,解释,即:算术运算可用,加法器,和,移位寄存器,来实现。,所以说,,“运算器”的核心部分是由具有某些逻辑运算功能的加法器和移位寄存器组成。,11/27/2024,46,乘法可采用,移位(右移),和,加法,来实现,部分积右移的方法示例:,1111(R2R3)1101(R6R7),0 0 0 0(部分积,R4R5),1 1 1 1,1 1 1 1,0 1 1 1 1(右移1位),0 0 0 0,0 1 1 1 1,0 0 1 1 1 1 (右移1位),1 1 1 1,0 0 1 0 1 1,1 0 0 1 0 1 1 (右移1位),1 1 1 1,1 0 0 0 0 1 1,1 1 0 0 0 0 1 1 (右移1位),+,+,+,1,+,1,1111,1101,1111,0000,1111,1111,11000011,11/27/2024,47,除法运算示例,例:100011101=111(余0),1 0 0 0 1 1,1 0 1,0 0 0 1 1 1,1 0 1,0 1 1 1,1 0 1,0 1 0 1,1 0 1,0,1 0 0 0 1 1,1 0 1,-,0 1 1 1 1,1 1 1 1 0(左移1位),1 0 1,-,0 1 0 1 0,1 0 1 0 0 (左移1位),1 0 1,-,0 0 0 0 0,商为”1”,商为”1”,商为”1”,除法是乘法的逆运算, 用移位(左移)、 相减的方法来完成。,返回,11/27/2024,48,2.2.5,溢出及其判断方法,1.,进位与溢出,进位,:指运算结果的最高位向更高位的进位。用来判断,无符号数,运算结果是否超出了计算机所能表示的最大无符号数的范围。,溢出:,指,带符号数,的,补码,运算溢出。用来判断带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为,n,位的带符号数,它能表示的补码范围为2,n1,+2,n1,1,如果运算结果超出此范围,就叫补码溢出,简称溢出。,11/27/2024,49,若,符号位,进位状态用CF来表示,当符号位向前有进位时,CF=1,否则,CF=0;,数值部分,最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的。,(2.2.7),若OF=1,说明结果溢出;若OF=0,则结果未溢出,。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出。,2. 溢出的判断方法,11/27/2024,50,无符号数 带符号数,01000100 68 +68,补,+)01001000 +)72 +) +72,补,10001100 140 +140,补,DF=1,CF=0,例2.13,设有两个操作数,x,=01000100B,,y,=01001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出?,解,11/27/2024,51,例2.14,设有两个操作数,x,=11101110B,,y,=11001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出?,解,无符号数 带符号数,11101110 238 -18,补,+)11001000 +)200 +) 56,补,10110110 438 -74,补,DF=1,CF=1,1,自动丢失,11/27/2024,52,作业(P,31),6-,(,1,),7-,(,1,)、(,3,),8-,(,1,)、(,3,)、(,5,)、(,7,),9,12-(1),补充题,:,为什说,“运算器”的核心部分是由具有某些逻辑运算功能的加法器和移位寄存器组成,?,11/27/2024,53,2.3 信 息 的 编 码,如上所述,在计算机中,,数,是用,二进制,表示的。数分,无符号数和有符号数两种:,1、无符号数。在某些情况下,要处理的数全是正数,此时再保留符号位就没有意义了,这时人们可以把最高有效位也作数值处理,这样的数称为无符号数。常用的无符号整数是表示,地址的数,,此外,如双精度数的低位字也是无符号整数。,2、有符号数。,而计算机进行人机交换时用到的信息如数字、字母、符号等都要以特定的二进制编码来表示,这就是,信息的编码,。,11/27/2024,54,2.3.1,二进制编码的十进制数,(BCD,编码,),虽然二进制数对计算机来说是最佳的数制,但是不直观,人们计算机的输入输出时,通常还是用十进制表示。人们提出了一个比较适合于十进制系统的二进制编码的特殊形式,即将,1,位十进制的,0,9,这,10,个数字分别用,4,位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码。这就是,二进制编码的十进制数,简称,BCD,码,(Binary-Coded Decimal),。,但为了便于记忆,最常用的是,8421 BCD,码,,这种编码从,0000,1111,这,16,种组合中选择前,10,个即,0000,1001,来分别代表十进制数码,0,9,,,8,、,4,、,2,、,1,分别是这种编码从高位到低位每位的权值。 它是,“逢十进一”的,是十进制数,,但它的每一位用四位二进制编码来表示。,BCD,码有两种形式,即压缩型,BCD,码和非压缩型,BCD,码。,11/27/2024,55,1,压缩型,BCD,码,压缩型BCD码用一个字节表示,两位,十进制数。例如,10000110B表示十进制数86。,2,非压缩型,BCD,码,非压缩型BCD码用一个字节表示,一位,十进制数。高4位总是0000,低4位用0000,1001中的一种组合来表示0,9中的某一个十进制数。,11/27/2024,56,表2.2 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,11/27/2024,57,注:,1、BCD码可简化人机联系。,2、编码效率低。如十进制数“7”用纯二进制码表示为“111”,而用BCD码表示则为“00000111”。,3、由于BCD码是,“逢十进一”,的,是十进制数,而计算机总是将它当作二进制数计算,每4位为一组,是,“逢十六进一”,的,运算结果不正确,要对它时行修正。,4、注意一个数的二进制和该数的BCD码是不一样的。如:12D=00001100B=CH,12D=00010010(BCD),11/27/2024,58,例2.15,十进制数与BCD数相互转换。, 将十进制数69.81转换为压缩型BCD数:,69.81=(0110 1001.1000 0001),BCD, 将BCD数1000 1001.0110 1001转换为十进制数:,(1000 1001.0110 1001),BCD,=89.69,11/27/2024,59,例2.17,(BCD码运算时的修正问题)用BCD码求38+49。,解,0011 1000 38的BCD码,+) 0100 1001 49的BCD码,1000 0001 81的BCD码,计算结果1000 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错误的。其原因是,十进制数相加应该是“,逢十进一,”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位与十六进制数低位向高位进位的情况相当,是“,逢十六进一,”,所以当相加结果超过9时将比正确结果少6,因此结果出错。解决办法是对二进制加法运算结果采用“,加6修正,”,从而将二进制加法运算的结果修正为BCD码加法运算结果。,11/27/2024,60,BCD数相加时,对二进制加法运算结果修正的规则如下,:, 如果两个对应位(,低4位或高4位二进制,)BCD数相加的结果向高位无进位,,且,结果小于或等于9,则该位不需要修正;若得到的结果大于9而小于16,则该位需要加6修正。, 如果两个对应位(,低4位或高4位二进制,) BCD数相加的结果向高位有进位(结果大于或等于16),则该位需要进行加6修正。,因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的,调整指令,进行调整,从而得到正确的BCD码结果。,11/27/2024,61,34+23570011 0100 34的BCD码,+ 0010 0011 23的BCD码,0101 0111 57的BCD码,结果正确,不需要调整。,例1:,11/27/2024,62,例2.16,设有变量,x,等于10010110B,当该变量分别为无符号数、原码、补码、压缩型BCD码时,试分别计算变量,x,所代表的数值大小。,解,无符号数:,x,=10010110B=1,2,7,+0,2,6,+0,2,5,+1,2,4,+0,2,3,+1,2,2,+1,2,1,+0,2,0,=150,原码:,x,原,=10010110B,x,= 0,2,6,+0,2,5,+1,2,4,+0,2,3,+1,2,2,+1,2,1,+0,2,0,= 22,补码:,x,补,=10010110B,x,原,=,x,补,补,=11101010B,x,= 1,2,6,+1,2,5,+0,2,4,+1,2,3,+0,2,2,+1,2,1,+0,2,0,= 106,BCD码:,x,BCD,=10010110B,x,=96,11/27/2024,63,注 意,送给计算机处理的二进制形式的操作数(机器数),到底是无符号数、补码形式的带符号数或者是其他形式的编码信息,,完全由程序设计者决定,,程序设计者应心中有数,否则无法对计算结果做出正确的判断和处理。,11/27/2024,64,482977 0100 1000 48的BCD码,+ 0010 1001 29的BCD码,0111 0001 71的BCD码,0100 1000,+ 0010 1001,0111 0001 中间结果 AF1,+ 0000 0110 加06H调整,0111 0111 正确结果,77的BCD码,加法运算后,低4位若向高4位有进位(即AF=1),调整指令应做加06H处理。,例2:,11/27/2024,65,2.3.2 ASCII,字符编码,所谓字符,是指数字、字母以及其他一些符号的总称。,现代计算机不仅用于处理数值领域的问题,而且要处理大量的非数值领域的问题。这样一来,必然需要计算机能对数字、字母、文字以及其他一些符号进行识别和处理,而计算机只能处理二进制数,因此,通过输入/输出设备进行人机交换信息时使用的各种字符也必须按某种规则,用二进制数码0和1来编码,计算机才能进行识别与处理。,11/27/2024,66,目前,国际上使用的字符编码系统有许多种。,在微机、通信设备和仪器仪表中广泛使用的是ASCII码(American Standard Code for Information Interchange)美国标准信息交换码。,ASCII码用一个字节来表示一个字符,,采用7位二进制代码来对字符进行编码,最高位一般用做校验位。7位ASCII码能表示2,7,=128种不同的字符,其中包括数码(0,9),英文大、小写字母,标点符号及控制字符等,,见表2.3。,该表的使用方法读者应熟练掌握。如数字“1”的ASCII码值为31H,字母“A”的ASCII码值为41H,符号“?”的ASCII码值为3FH等。,11/27/2024,67,表2.3 美国标准信息交换码ASCII(7位代码),响铃,换行,回车,空格,11/27/2024,68,回车符(CR)与换行符(LF)的区别?,回车符(CR):光标回到当前行的开头却不向下移一行。,换行符(LF):光标下移一行,但不会移到这一行的开头。,在文字编辑中,它们没有区别。即一般说的回车,既有回车符(CR)的功能又有换行符(LF)的功能。,11/27/2024,69,ASCII一些规律,字符09这10个数字符的高3位编码都为011,低4位为00001001,屏蔽掉高3位的值,低4位正好是数据09的二进制形式。这样编码的好处是既满足正常的数值排序关系,又有利于ASCII码与二进制码之间的转换。,英文字母的编码值满足AZ或az正常的字母排序关系。,大小写英文字母编码仅是B,5,位值不相同,B,5,为1是小写字母,这样编码有利于大小写字母之间的编码转换。 (a),ASCII,-(A),ASCII,=20H=32D 。,11/27/2024,70,2,.3.3 汉字的编码,计算机在处理汉字时,汉字字符也必须用基2码编码表示,一般汉字编码采用两个字节即16位二进制数。但由于汉字的特殊性,在汉字的输入、存储、输出过程中所使用的汉字编码是不一样的,输入时有,输入编码,,存储时有,汉字机内码,,输出时有,汉字字形码,。,11/27/2024,71,1) 汉字输入编码,为了能把汉字这种象形文字通过西文标准键盘输入到计算机内,就必须对汉字用键盘已有的字符设计编码,这种编码称为汉字的输入编码。,同一汉字有不同的输入编码,这取决于用户采用哪种输入法。不同的输入法对同一汉字有不同的编码方案。常见的有数字码、音码、形码及混合码。,11/27/2024,72,2) 汉字机内码,汉字机内码也称汉字内部码,简称内码。它是机器存储和处理汉字时采用的统一编码。每个汉字的机内码是惟一的,用两个字节表示。为了避免与西文字符的ASCII码之间产生二义性,汉字机内码中两个字节的最高位均规定为“1”。,3) 汉字字形码,汉字字形码也叫汉字字模点阵码,是汉字输出时的字形点阵代码,是一串基2码编码。,11/27/2024,73,当计算机在我国应用时,特别是把计算机用于管理等事务处理领域时,就要求计算机能够输入、处理和输出汉字。,显然汉字在计算机中,也只能用若干位的二进制编码来表示。,国家根据汉字的常用程序定出了一级和二级汉字字符集,并规定了编码,这就是中华人民共和国国家标准信息交换用汉字编码,GB2312-80中汉字的编码即,国标码,。该标准编码字符集共收录汉字和图形符号7445个,其中包括:,汉字的编码,11/27/2024,74,1一般符号202个,包括间隔符、标点、运算符、单位符号和制表符等。,2_序号60个。它们是120(20个),(1)(20)(20个),(10个)和(一)(十)(10个)。,3数字22个。它们是09和I。,4英文字母52个,大、小写各26个。,5日文假名169个,其中平假名83个,片假名86个。,6希腊字母48个,其中大、小写各24个。,7俄文字母66个,其中大、小写各33个。,8汉语拼音符号26个。,9汉语注音字母37个。,10汉字6763个。这些汉字分为两级,第一级汉字3755个,第二级汉字3008个。,11/27/2024,75,这个字符集中的任何一个图形、符号及汉字都是用两个7位的字节表示(在计算机中当然用两个8位字节,每个字节的最高位为0来表示)。国标码的每一个字节的定义域在21H到7EH。如啊字国标编码为30H,21H。即为001 10000,00100001这两个字节。,国标码中,汉字的排列顺序为:一级汉字按汉语拼音字母顺序排列,同音字母以笔划顺序为序;二级汉字按部首顺序排列。,为了使汉字的编码与常用的ASCII码相区别,在机器中,汉字是以,内码,形式存储和传输的。一种机器常用若干种汉字输入方式(输入码),但其内码是统一的。,通常就是用汉字的国标码的两字节的最高位都置“l”形成的,。如汉字“啊”的国标码为00110000,00100001,则它的内码为10110000,10100001即B0H,A1H。,11/27/2024,76,2.4 数的定点与浮点表示法,2.4.1,定点表示,所谓定点表示法,是指小数点在数中的位置是固定的。原理上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成,纯小数,或,纯整数,形式,如图2.1所示。,图2.1 定点数的两种表示方法,(a) 纯小数形式;(b) 纯整数形式,11/27/2024,77,设用一个,n,+1位字来表示一个数,x,,其中一位表示符号位(0表示正,1表示负),其他,n,位为数值位。对于纯小数表示法,所能表示的数,x,(原码表示,下同)的范围为:,(12,n,),x,12,n,(2.4.1),它能表示的数的最大绝对值为12,n,,最小绝对值为2,n,。,对于纯整数表示法,所能表示的数,x,的范围为:,(2,n,1),x,2,n,1 (2.4.2),它能表示的数的最大绝对值为2,n,1,最小绝对值为1。,11/27/2024,78,因为实际工作中很少遇到数据都是纯小数或纯整数的情况,所以定点表示法要求程序员做的一件重要工作是为要计算的问题选择“,比例因子,”。所有原始数据都要用比例因子化成纯小数或纯整数形式,计算结果又要用比例因子恢复实际值。这一过程不仅占用资源,有时为了选择适当的比例因子以免结果溢出,需要反复多次调整比例因子,而且比例因子也需要占用一定的存储空间。 如:,17.8-178(以纯整数形式进行处理)-17.8,10,10,11/27/2024,79,2.4.2,浮点表示,所谓浮点表示法,就是小数点在数中的位置是浮动的。,任意一个二进制数,x,总可以写成如下形式:,(2.4.3),其中,,d,称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,用尾数前的一位表示,该位为0,表明该浮点数为正,该位为1,表明该浮点数为负;,p,称为阶码,它前面的符号称为阶符,用阶码前一位表示,阶码为正时,用0表示,阶码为负时,用1表示。浮点数的编码格式如图2.2所示。,11/27/2024,80,可以看出,将尾数,d,的小数点向右(阶码,p,为正时)或向左(阶码,p,为负时)移动,p,位,即可得到该浮点数表示的数值,x,。阶码,p,指明小数点的位置,小数点随着阶码的大小和正负而浮动,因此把这种数称为浮点数。,设阶码的位数为,m,位,尾数的位数为,n,位,则该浮点数表示的数值范围为:,(2.4.4),在字长相同的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规则复杂。,11/27/2024,81,作业,作业:P31:6(2)(3),7(1)(3),8(2)(3),9,12(1)(3),13(1)(3),补充题:为什说,“运算器”的核心部分是由具有某些逻辑运算功能的加法器和移位寄存器组成?,11/27/2024,82,第二章 小结,计算机只能处理二进制形式的操作数。输入到计算机的任何信息都要通过一定的手段(编码)转化成二进数的形式,同样的,计算机输出到外设也要通过一定的手段(解码)将二进制数转换成相应的信息。,送给计算机处理的二进制数到底是无符号数、补码形式的带符号数或者是其他形式的编码信息(如BCD码、ASCII码等),完全是由程序设计者自己确定的,因此程序设计者自己应心中有数,否则就无法对计算结果做出正确的判断和处理。,计算机中只要是带符号数,就必然是用该数的补码形式来表示该符号数。,11/27/2024,83,例 题 1,十六进制数88H,可表示成下面几种形式,请找出错误的表示( )。 (A) 无符号十进制数136,(B) 带符号十进制数120 (C) 压缩型BCD码十进制数88,(D) 8位二进制数8的补码,D,11/27/2024,84,例 题 2,执行下列两条指令后,回答问题。,MOV AL,59H,ADD AL,53H,(1).(AL)=,H,状态标志位(CF)=,,(ZF)=,,(OF)=,。,(2).若参加运算的两个操作数均为无符号数,则AL中的运算结果是否正确,。(填“是”或“否”)。,(3).若参加运算的两个操作数均为带符号数,则AL中的运算结果是否正确,。(填“是”或“否”)。,11/27/2024,85,
展开阅读全文