《第2章数制与编码精.ppt》由会员分享,可在线阅读,更多相关《第2章数制与编码精.ppt(161页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章数制与编码第1页,本讲稿共161页21进位计数制进位计数制 211十进制数的表示十进制数的表示 位置记数法 按权展开法 第2页,本讲稿共161页212二进制数的表示二进制数的表示 由低位向高位“逢二进一”位置计数法:按权展开法 对二进制数的表示,可以在数字右下角标注2或B(Binary的首字母),如(10110)2、(10110)B 第3页,本讲稿共161页二进制运算规则简单。其运算规则如下:加法规则 0+0=0 0+l=1 l+0=1 l+1=0(同时向相邻高位进1)减法规则 00=0 01=1(同时向相邻高位借1)10=1 11=0乘法规则 00=0 01=0 l0=0 11=l除法
2、规则 01=0 l1=1第4页,本讲稿共161页2.1.32.1.3其他进制数的表示其他进制数的表示 八进制数的基数是8,采用的数码是0,l,2,3,4,5,6,7。计数规则是从低位向高位“逢八进一”,通常在八进制数字的右下角标注8或数字后边接O(Octal的首字母)。十六进制数的基数为16,采用的数码是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中,A,B,C,D,E,F分别代表十进制数字10,11,12,13,14,15。十六进制的计数规则是从低位向高位“逢十六进一”。通常,在十六进制数字盼右下角标注16或数字后边接H(Hex的首字母)。第5页,本讲稿共161页 十进
3、制数二进制数八进制数十六进制数(r=10)(r=2)(r=8)(r=16)00000OO0l000l011200lO02230011033401000445010l055601100667011l0778100010891001119lO101012A1l101113B12110014C13110l15D1411lO16E15111117F表表2.12.1不同进位计数制的各种数码不同进位计数制的各种数码第6页,本讲稿共161页2 22 2数制转换数制转换 2 22 21 1二进制数与十进制数的转换二进制数与十进制数的转换 二进制数转换成十进制数是很方便的,只要将二进制数写成按权展开式,并将式中
4、各乘积项的积算出来,然后各项相加,即可得到与该二进制数相对应的十进制数。例如(10110.01)2=l24+023+122+l21+020+02-1+12-2 =16+0+4+2+0+0十0.25 =(22.25)10十进制数转换成二进制数时,需将待转换的数分成整数部分和小数部分,并分别加以转换。例如将58.625转换成二进制数时,先转换整数58,再转换小数0.625,然后合成在一起即可。第7页,本讲稿共161页2.2.2八进制、十六进制与二进制间的转换八进制、十六进制与二进制间的转换 八进制和十六进制的基数分别是8和16,并且:8=23,16=24;所以它们与二进制之间具有整倍数的关系,因此
5、可以进行直接转换。将二进制数从小数点开始,分别向左、右按3位或4位分组,不足3位或4位的则需在最高位或最低位补0,最后将每组用对应的八进制数或十六进制数代替。第8页,本讲稿共161页例如:(332.53)O=(11011010.101011)B=(DA.AC)H第9页,本讲稿共161页23带符号数的代码表示带符号数的代码表示 231真值与机器数真值与机器数 一个带符号的数由两部分组成:一部分表示数的符号,另一部分表示数的数值。数的符号是一个具有正、负两种值的离散信息,它可以用一位二进制数来表示,习惯上以0表示正数,而以1表示负数 例如,二进制正数+0.1101在机器中的表示如图2.1(a)所示
6、,二进制负数-0.1101在机器中的表示如图2.1(b)所示。图2.1二进制数在机器中的表示第10页,本讲稿共161页有符号数表示有符号数表示真值:把用“+”、“-”表示的数称为真值数,例如:-56,+123等。机器数:一个数及其符号在机器中的数值化表示。符号位上的0、1分别来表示正、负。其值称为机器数的真值。例如:-56用机器数表示(-56)10=(10111000)2 +56用机器数表示(+56)10=(00111000)2机器数可以用不同的方法来表示,常用的有原码、反码、补码和移码表示法。第11页,本讲稿共161页2.3.22.3.2原码原码原码又称为“符号-数值表示”。在以原码形式表示
7、的正数和负数中,第1位表示符号位,对于正数,符号位记作0,对于负数,符号位记作1,其余各位表示数值部分。假如两个带符号的二进制数分别为N1和N2,其真值形式为N1=+10101 N2=-01101 则Nl和N2的原码表示形式为 N1原=010101 N2原=101101第12页,本讲稿共161页小数原码的定义:即:X原=符号位+|X|XX原原=X 0X 0X1X11-X -1X1-X -1X0 0第13页,本讲稿共161页例:X=+0.1011 X原=01011 X=-0.1011 X原=11011由于小数点位置已默认在符号位之后,书写时可以将其省略。零的原码也有两种表示形式:+0原=0000
8、0 -0原=10000第14页,本讲稿共161页【例】X=+105,反=原=01101001X=-105,原=11101001 第15页,本讲稿共161页2 23 33 3反码反码 对于负数,反码的数值是将原码数值按位求反,即原码的某位为1,反码的相应位就为0,或者原码的某位为0,反码的相应位就为l。而对于正数,反码和原码相同。所以,反码数值的形成与它的符号位有关。假如两个带符号的二进制数分别为N1和N2,其真值形式为 N1=+11011 N2=-01101则N1和N2的反码表示形式为 N1反=011011 N2反=110010第16页,本讲稿共161页反码表示法反码通常用来作为由原码求补码或
9、由补码求原码的中间过渡。小数反码的定义为:XX反反=X 0X 0X1X1(2-22-2-n-n)+X -1X+X -1X0 0第17页,本讲稿共161页例:X=+0.1011(n=4),则X反=01011 X=-0.1011(n=4),则X反=2-2-4+X =2-2-4+(-0.1011)=10100反码零有两种表示形式:+0反=00000 -0反=11111第18页,本讲稿共161页【例】X=+105,反=原=01101001X=-105,反=10010110X=(+127)10=(01111111)反X=(-127)10=(10000000)反8位反码其数值范围为+127-127,而0有
10、+0、-0两种表示。第19页,本讲稿共161页2.3.42.3.4补码补码 补码又称为“对2的补数”。在补码表示法中,正数的表示同原码和反码的表示是一样的,而负数的表示却不同。对于负数,其符号位为1,而数值位是将原码按位变反加1,即按位变反,再在最低位加1。假如两个带符号的二进制数分别为Nl和N2,其真值形式为 Nl=十11011 N2=-01010则N1和N2的补码表示形式为 N1补=O1101l N2补=110110第20页,本讲稿共161页补码表示法小数补码的定义为:即:X补=2符号位+X (mod 2)例:X=+0.1011,则X补=01011 X=-0.1011,则X补=2+X=2+
11、(-0.1011)=10101XX补补=X 0X 0X1X12+X=2-|X|-12+X=2-|X|-1X0XX-2n)式中X为真值,n为整数的位数,即数值位个数。其实移码就是在真值上加一个常数2n。在数轴上移码所表示的范围恰好对应于真值在数轴上的范围向轴的正方向移动2n个单元。如图3-2所示,这就是移码名字的由来。其中2n可称为偏移量。第34页,本讲稿共161页进一步观察发现,同一个真值的移码和补码之间仅差一个符号位,若将补码的符号位由“0”改为“1”,或由“1”改为“0”,即得该真值的移码。第35页,本讲稿共161页表3-10 真值、补码和移码对照表真真值值XX补补X移移X移移对应对应的十
12、的十进进制整数制整数-100000-11111-11110-0000100000+00001+00010+11110+11111100000100001100010111111000000000001000010011110011111000000000001000010011111100000100001100010111110111111012313233346263第36页,本讲稿共161页【例】写出下列各数的原码、反码、补码、移码(用8位二进制数表示),其中最高位是符号位。如果是纯小数,小数点在最高位之后;如果是整数,小数点在最低位之后。(1)27/64(2)27/64(3)-127(
13、4)用小数表示1(5)用整数表示1(6)用整数表示128 第37页,本讲稿共161页表2 例2-4的机器数十进制数二进制数真值原码反码补码移码-27/64-0,0110111.01101101.10010011.10010100.100101027/640.0110110.01101100.01101100.01101101.0110110-127-11111111,11111111,00000001,00000010,0000001用小数表示-1-1.0/1.0000000/用整数表示-1-11,00000011,11111101,11111110,1111111用整数表示-128-1000
14、0000/1,00000000,0000000第38页,本讲稿共161页2.4数的定点表示和浮点表示数的定点表示和浮点表示 在计算机中的数据有定点数和浮点数两种表示方式。在这两种方式中,小数点都不用专门的器件表示,而是按约定的方式标出。第39页,本讲稿共161页数的定点表示与浮点表示1.定点表示法定点数数的小数点位置固定不变。一般地,小数点的位置只有两种约定:一种约定小数点位置在符号位之后、有效数值部分最高位之前,即定点小数;另一种约定小数点位置在有效数值部分最低位之后,即定点整数。第40页,本讲稿共161页数的定点表示和浮点表示数的定点表示和浮点表示 数的定点表示数的定点表示 定点整数和小数
15、的表示第41页,本讲稿共161页采用定点数表示数据的机器叫做定点机。数值部分的位数n决定了定点机中数据的表示范围。若机器数采用原码,小数定点机中数的表示范围是-(1-2-n)(1-2-n),整数定点机中数的表示范围是-(2n-1)(2n-1)。若机器数采用补码,小数定点机中数的表示范围是-1(1-2-n),整数定点机中数的表示范围是-2n(2n-1)。第42页,本讲稿共161页2.浮点数表示浮点数是指小数点在数据中的位置可以左、右移动的数。一个数N要用浮点数表示可以写成:N=MREM表示浮点数的尾数E表示浮点数的指数或阶码R指的是在这个指数下的基数第43页,本讲稿共161页其中M称为尾数,可以
16、是一个带符号的纯小数,由它来确定浮点数的符号以及精度。所以尾数的数码位越长,浮点数的精度(数据精度是指一个数的有效位数)就越高。R称为基数,也叫阶码的底。在计算机中,基数可以取2、4、8或者16,它在计算机中通常是一个默认的固定值,不用明确表示出来。第44页,本讲稿共161页E为阶码,是一个带符号的纯整数,由它来确定尾数的小数点的位置。阶码为正,尾数小数点向右移,浮点数增大;阶码为负,尾数的小数点向左移,浮点数减少。显然,阶码位数越多,所能表示的浮点数的范围(数值范围是指机器所能表示的一个数的最大值和最小值之间的范围)也就越大。第45页,本讲稿共161页数的定点表示与浮点表示计算机中浮点数的格
17、式 如下:其中,ES为阶码的符号位,表示阶的正负;MS为尾数的符号位,表示阶的正负。E1E2E3EmMSM1M2M3Mn阶符尾数尾符ES阶码第46页,本讲稿共161页浮点数的表示范围里常常把“0”去掉。表示正数和负数两个范围。在机器字长一定的情况下,阶码越长,它所能表示的浮点数的范围也就越大,但阶码加长之后,尾数必然会缩短,那浮点数的精度就会随之降低,所以浮点数格式的设定中要合理考虑阶码与尾数的位数分配。另外,对于尾数和阶码还牵涉到用什么机器码来表示的问题,通常尾数可用原码或补码表示,而阶码可用原码、补码或移码表示。第47页,本讲稿共161页在浮点数实际阶码大于阶码位所能表示的最大值时,机器会
18、停止运算,进行中断溢出处理,这种情况称为“上溢”;当浮点数实际阶码小于阶码位所能表示的最小值时,称为“下溢”。对下溢来说,实际数据的绝对值非常小,此时通常可将尾数各位强行置为0,按0来继续处理,这种0值称为机器零。第48页,本讲稿共161页由于浮点数的精度是由尾数的位数来确定的,所以通常总希望有尽可能长的尾数。但实际上在尾数的小数点后经常有许多位为“0”,这样尽管尾数位数较多,尾数的有效位也会缩短,为了提高浮点数的精度,可以用规格化数表示尾数。当尾数不是规格化数时,可以通过修改阶码并同时对尾数左右移位的办法使其变成规格化数,这个过程称为尾数的规格化。第49页,本讲稿共161页3.浮点数的规格化
19、当R=2且尾数用二进制数表示时,浮点规格化数定义尾数M应满足下面关系:(1)对于正数,无论尾数用原码表示还是用补码表示,尾数M都应大于等于1/2,小于1”,即1/2M-1,用二进制数表示为M=1.1(为0或1)。如果尾数用补码表示,-1/2M-1,用二进制数表示为M=1.0(为0或1)。第50页,本讲稿共161页【例】1.将0.0011*20和-0.0011*20转换成规格化数解:0.0011*20=0.1100*2-2 -0.0011补=1.1101*20=1.0100*2-22.将规格化数1 10000001 01000000000000000000000转换成十进制解:(-1*)1*(1
20、+0.25)*2129-127=-1*1.25*4 =-5 (-1)s*1.f*2e-127第51页,本讲稿共161页最后,对定点数和浮点数可作出比较如下:(1)当浮点数和定点数的位数相同时,浮点数的表示范围要比定点数的范围大得多。(2)当浮点数表示为规格化数时,其精度也要比定点数高。第52页,本讲稿共161页(3)浮点数分成了阶码和尾数两个部分,二者都要参与运算,且运算结果要规格化。比起定点运算,浮点运算的步骤更复杂,运算的速度也慢。第53页,本讲稿共161页(4)浮点数是通过对规格化数的阶码的判断来决定是否溢出的,而定点数是对其本身进行判断。如小数定点机中的数其绝对值必须小于1,否则即是溢
21、出,此时要求机器停止运算,进行处理。而浮点数的表示范围远比定点数大,仅当“上溢”时机器才停止运算。第54页,本讲稿共161页总之,浮点数在数的表示范围、运算精度、溢出处理和程序编程方面均优于定点数。但在运算规则、运算速度及硬件成本等方面又不如定点数。因此,究竟选用定点数还是浮点数,应根据具体应用综合考虑。不过,现代的计算机通常是同时采用定点数和浮点数。第55页,本讲稿共161页实例:IEEE754标准在目前常用的80 x86系列微型计算机中,通常设有支持浮点运算的部件。在这些机器中的浮点数采用IEEE754标准,它与前面介绍的浮点数格式有一些差别。按IEEE754标准,常用的浮点数的格式 ms
22、 Em尾符 阶码部分,用移码表示,尾数数值位部分,用原码表示第56页,本讲稿共161页表 IEEE 754 标准中的 3 种浮点数 偏 置 值类 型 数符 阶码 尾数数值 总位数 十六进制 十进制短浮点数 1 8 23 32 7FH127长浮点数 1 11 52 64 3FFH1023临时浮点数 1 15 64 80 3FFFH16383第57页,本讲稿共161页数的定点表示与浮点表示Pentium处理器三种类型浮点数格式:参数 单精度浮点数 双精度浮点数 扩充精度浮点数 浮点数长度(字长)32 64 80 尾数长度P 23 52 64 符号位S位数1 1 1 指数E长度8 11 15 最大指
23、数+127+1023+16383 最小指数-126-1022-16382 第58页,本讲稿共161页 IEEE754标准约定,符号位s用0表示正数,用1表示负数。尾数部分可以取任意的二进制数值f,这样,单精度数所表示的数值为:N=(-1)S*1.f*2e-127双精度数所表示的数值为:N=(-1)S*1.f*2e-1023例:将-0.75表示成单精度的IEEE754标准代码。-0.75=-0.11*20=-1.1*2-1根据单精度的IEEE754标准公式:N=(-1)S*1.f*2e-127这个数可以表示为(-1)1*(1+0.10000000000000000000000)*2-1=(-1)
24、1*(1+0.10000000000000000000000)*2126-127即 1 01111110 10000000000000000000000 第59页,本讲稿共161页【例】将(100.25)10转换成短浮点数格式。第60页,本讲稿共161页【例】将(100.25)10转换成短浮点数格式。把十进制数转换成为二进制数(100.25)10=(1100100.01)2规格化二进制数 1100100.01=1.10010001261111111+110=10000101以短浮点数格式存储该数阶码=10000101尾数=10010001000000000000000所以,短浮点数代码为 0;
25、10000101;10010001000000000000000表示为十六进制的代码:42C88000H。第61页,本讲稿共161页【例】把短浮点数C1C90000H转换成为十进制数。第62页,本讲稿共161页【例】把短浮点数C1C90000H转换成为十进制数。因为,C1C90000H=11000001110010010000000000000000所以,符号位=1阶码=10000011尾数=10010010000000000000000计算出阶码真值(移码-偏置值)10000011-1111111=100以规格化二进制数形式写出此数1.100100124写成非规格化二进制数形式11001.0
26、01转换成十进制数,并加上符号位11001.001)2=(25.125)10所以,该浮点数=-25.125第63页,本讲稿共161页4 浮点数规格化为了保留最多的有效数字提高浮点数的精度,其尾数一般都以规格化数表示当基数为2时:若尾数M是原码表示,尾数的最高位为1是规格化形式,即必须满足0.5|M|1对于正数,尾数应为0.1xx对于负数,尾数应为1.1xx若尾数M是补码表示,尾数的最高位与数符符号位相反为规格化形式对于正数,尾数应为0.1xx,即0.5M1对于负数,尾数应为1.0 xx,即-1M-0.5第64页,本讲稿共161页当尾数不是规格化数时,就要通过修改阶码并同时左右移尾数使其变为规格
27、化数,这一过程则称为规格化。当基数为2时,尾数左移一位,阶码减1,称为向左规格化(左归)尾数右移一位,阶码加1,称为右移规格化(右归)例:0.0011*20,-0.0011*20第65页,本讲稿共161页2.3.52.3.5机器数的加、减运算机器数的加、减运算 1原码运算原码运算 原码中的符号位仅用于表示数的正、负,不参加运算,进行运算的只是数值部分。原码运算时,应首先比较两个数的符号,若两数的符号相同,则两数相加就是将两个数的数值相加,结果的符号不变;若两数的符号不同,就得进一步比较两数的数值相对大小,两数相加是将数值较大的数减去数值较小的数,结果的符号与数值较大的数的符号相同。第66页,本
28、讲稿共161页2补码运算补码运算由补码的定义可以证明如下补码加、减运算规则:Nl+N2补=N1补+N2补Nl-N2补=N1补+-N2补 补码的加、减运算规则表明:两数和的补码等于两数的补码之和,而两数差的补码页可以用加法来实现。运算时,符号位和数值位一样参加运算,如果符号产生进位,则要将此进位“丢弃”。运算结果的符号位为0时,说明是正数的补码;运算结果的符号为l时,说明是负数的补码。第67页,本讲稿共161页补码加减运算的基本关系式采用补码进行加减运算时,操作数和结果均用补码表示,符号位连同数值位一起处理,运算后同时得到结果的符号和数值。运算时所依据的基本关系如下:XY补=X补Y补XY补=X补
29、Y补 若已知Y补,求Y补:将Y补的各位(包括符号位)逐位取反再在最低位加1即可求得Y补 第68页,本讲稿共161页即补码表示的两个数在进行加法运算时,即补码表示的两个数在进行加法运算时,可以把符号位与数值位同等处理,只要结可以把符号位与数值位同等处理,只要结果不超出机器所能表示的数值范围,运算果不超出机器所能表示的数值范围,运算后的结果对于整数按后的结果对于整数按2 2n+1n+1取模取模(n+1(n+1代表机器代表机器字长,包括字长,包括1 1位符号位位符号位);或对于小数按;或对于小数按2 2取取模,就能得到本次加法的运算结果。模,就能得到本次加法的运算结果。例例3-1 x=0.1001,
30、y=0.0101,3-1 x=0.1001,y=0.0101,求求x+yx+y。解解 x x补补=0.1001=0.1001,yy补补=0.0101=0.0101第69页,本讲稿共161页所以 x+y=+0.1110。第70页,本讲稿共161页补码减法运算补码减法运算对于减法运算,因为:对于减法运算,因为:A-B=A+(-B)A-B=A+(-B),则则A-BA-B补补=A+(-B)=A+(-B)补补 (3-3)(3-3)由补码加法的基本公式可得:由补码加法的基本公式可得:整数整数 A-BA-B补补=A+(-B)=A+(-B)补补=A=A补补+-B+-B补补 (mod 2n+1)(3-4)(mo
31、d 2n+1)(3-4)小数小数 A-BA-B补补=A=A补补+-B+-B补补 (mod 2)(3-5)(mod 2)(3-5)第71页,本讲稿共161页因此,求因此,求A-BA-B时,若机器数采用补码表示,时,若机器数采用补码表示,只需先求只需先求-B-B补(称补(称-B-B补为补为“求补求补”后的后的减数),就可按补码加法规则进行运算。减数),就可按补码加法规则进行运算。而而-B-B补可由补可由BB补求得,即包括符号位在补求得,即包括符号位在内,内,BB补每位取反,末位加补每位取反,末位加1 1即可得到即可得到-B-B补。补。第72页,本讲稿共161页 例例3-2 x=0.10103-2
32、x=0.1010,y=-0.0011y=-0.0011,用补码的,用补码的加法求加法求x+yx+y。解解 x x补补=0.1010=0.1010,yy补补=1.1101=1.1101 x x补补+y+y补补=0.1010+1.1101=10.0111=0.1010+1.1101=10.0111(按模(按模2 2的意义,最左边的的意义,最左边的1 1丢掉)丢掉)所以所以x+y=0.0111x+y=0.0111。第73页,本讲稿共161页当数采用补码表示时,就可以把减法转换为加法。例如:64-1064+(-10)64补40H0100 0000B 10补0AH0000 1010B -10补1111
33、0110B做减法运算过程如下:0100 0000 -0000 1010 0011 0110用补码相加过程如下:0100 0000 +1111 01101 0011 0110 进位自然丢失结果相同,其真值为:54(36H486)。第74页,本讲稿共161页 最高位的进位是自然丢失的,故做减法与用补码相加的结果是相同的。因此,在微型机中,凡是符号数一律是用补码表示的。一定要记住运算的结果也是用补码表示的。如:34-6834+(-68)3422H0010 0010B 6844H0100 0100B -681011 1100B 用补码相加过程如下:0010 0010 1011 1100 1101 11
34、10 结果相同。因为符号位为1,所以结果为负数。对其求补,得其真值:-0100010B,即为-34(-22H)。第75页,本讲稿共161页【例】已知X=+1001,Y=+0100,求XY补和XY补的值。解:因为X补=0 1001,Y补=0 0100,-Y补=1 1100,所以有:XY补=X补Y补=0 1001+0 0100=0 1101 XY补=X补Y补=0 1001+1 1100=0 0101(符号位产生的进位丢掉)第76页,本讲稿共161页补码加减运算规则参加运算的操作数及最后的运算结果均用补码表示;操作数的符号位与数值位同时进行运算,即符号位作为数的一部分参加运算;进行加法运算时,将补码
35、表示的操作数直接相加,运算结果即为和的补码;进行减法运算时,先将减数求补,然后与被减数相加,运算结果即为差的补码;加减运算后,若符号位有进位,要丢掉。第77页,本讲稿共161页补码加减运算规则操作数X,Y用补码表示:X补、Y补X补Y补X补Y补丢弃符号位的进位,得到补码表示的运算结果补码加减运算算法流程第78页,本讲稿共161页3.1 溢出判断与移位3.1.1 溢出判断方法3.1.2 移位操作3.1.3 舍入处理第79页,本讲稿共161页3.1.3 3.1.3 溢出判断溢出判断 例例3-3 3-3 设机器数字长为设机器数字长为8 8位,其中一位为符位,其中一位为符号位,令号位,令A=-93A=-
36、93,B=+45B=+45,求,求A-BA-B补。补。解解 由由A=-93=-1011101A=-93=-1011101,得得AA补补=1 0100011=1 0100011。由由B=+45=+0101101B=+45=+0101101,得得BB补补=0 0101101=0 0101101,-B-B补补=1 1010011=1 1010011。A-BA-B补补=A=A补补+-B+-B补补 =1 0100011+1 1010011 =1 0100011+1 1010011 =10 1110110 =10 1110110 第80页,本讲稿共161页3.1.1 溢出判断方法溢出运算结果超出机器数所能
37、表示的范围。正溢当正数与正数相加或正数与负数相减时,绝对值超出机器允许表示的范围。负溢当负数与负数相加或负数与正数相减时,绝对值超出机器允许表示的范围。几个符号:A、B参加运算的操作数(字长5位,数值位4位)F运算结果SA、SB和SF分别表示操作数和结果的符号C表示数值最高位产生的进位,CF表示符号位产生的进位。第81页,本讲稿共161页3.1.1 溢出判断方法判断方法一:“溢出”=表明两个同号的数相加,运算结果的符号与操作数的符号相反时有溢出发生。当两个正数相加,即SA=0,SB=0时,SF=1,则说明产生正溢;当两个负数相加,即SA=1,SB=1时,SF=0,则说明产生负溢。第82页,本讲
38、稿共161页2.3.1 溢出判断方法判断方法二:溢出=表明当数值最高位产生的进位与符号位产生的进位相反时,有溢出发生。判断方法三:溢出=若运算结果的两个符号位相反,则表明有溢出发生当SF1SF2=01时,正溢;当SF1SF2=10时,负溢;当SF1SF2=00或SF1SF2=11时,无溢出发生。第83页,本讲稿共161页例:按模例:按模2 2n+1n+1的意义,最左边的的意义,最左边的“1 1”自然丢自然丢掉掉 故故A-BA-B补补=0 1110110=0 1110110,还原成真值得还原成真值得A-B=118A-B=118,结果出错。,结果出错。这是因为这是因为A-B=-138A-B=-13
39、8超出了机器字长所能表超出了机器字长所能表示的范围。示的范围。在计算机中,这种超出机器字长的现象,称在计算机中,这种超出机器字长的现象,称为溢出。为溢出。第84页,本讲稿共161页两个正数相加,结果大于机器所能表示的两个正数相加,结果大于机器所能表示的最大正数,称为上溢。最大正数,称为上溢。两个负数相加,结果小于其所能表示的最两个负数相加,结果小于其所能表示的最小负数,称为下溢。小负数,称为下溢。因此,在定点补码加减运算过程中,必须因此,在定点补码加减运算过程中,必须对结果是否溢出作出判断。对结果是否溢出作出判断。第85页,本讲稿共161页定点补码加减运算判断溢出有如下三种方法。定点补码加减运
40、算判断溢出有如下三种方法。1 1用计算结果的符号位来判断溢出用计算结果的符号位来判断溢出 符号不同的两个补码相加是不会产生溢出的,符号不同的两个补码相加是不会产生溢出的,所以可不考虑。所以可不考虑。符号位相同的两个补码相加,如果和的符号位符号位相同的两个补码相加,如果和的符号位与加数(或被加数)的符号相反,则表明运算与加数(或被加数)的符号相反,则表明运算结果溢出;结果溢出;第86页,本讲稿共161页 两个符号位相反的补码相减,如果差的符号两个符号位相反的补码相减,如果差的符号位与被减数的符号位相反,则表明运算结位与被减数的符号位相反,则表明运算结果溢出。果溢出。这种方法需要判断操作是加法还是
41、减法,这种方法需要判断操作是加法还是减法,以及运算结果的符号与操作数符号的关系。以及运算结果的符号与操作数符号的关系。第87页,本讲稿共161页运算结果运算结果z z,被加数(被减数)被加数(被减数)x x,加数(减数)加数(减数)y y的符号位分别记作:的符号位分别记作:z z0 0,x x0 0,y y0 0。可得判断溢出的逻辑表达式为:。可得判断溢出的逻辑表达式为:v=xv=x0 0 y y0 0 z z0 0+x+x0 0 y y0 0 z z0 0 (3-6)3-6)若若v=1v=1,则说明运算结果出现溢出。,则说明运算结果出现溢出。第88页,本讲稿共161页2 2用计算结果最高数值
42、位向符号位的进位用计算结果最高数值位向符号位的进位值值c c1 1与符号位的进位值与符号位的进位值c c0 0来判断溢出来判断溢出 两个数的补码实现加减运算时,若计算结两个数的补码实现加减运算时,若计算结果的最高位向符号位的进位值果的最高位向符号位的进位值c1c1与符号位的与符号位的进位值进位值c c0 0不同,则表明产生了溢出。判断溢不同,则表明产生了溢出。判断溢出的逻辑表达式为:出的逻辑表达式为:v=cv=c0 0 c c1 1+c+c0 0 c c1 1 (3-73-7)若若v=1v=1,则说明运算结果出现溢出。,则说明运算结果出现溢出。第89页,本讲稿共161页 例例3-4 3-4 设
43、设x=+1011x=+1011,y=+1001y=+1001,求,求x+yx+y补。补。解解 x x补补=0 1011=0 1011,yy补补=0 1001=0 1001x+yx+y补补=0 1011+0 1001=1 0100=0 1011+0 1001=1 0100。因为因为c c0 0=0=0,c c1 1=1=1。所以。所以v=cv=c0 0+c+c1 1=1=1,产生了,产生了溢出。溢出。第90页,本讲稿共161页 例例3-5 3-5 设设x=-1101x=-1101,y=-1011y=-1011,求,求x+yx+y补。补。解解 x x补补=1 0011=1 0011,yy补补=1
44、0101 =1 0101 x+yx+y补补=1 0011+1 0101=10 1000=1 0011+1 0101=10 1000。因为因为c c0 0=1=1,c c1 1=0=0。所以。所以v=cv=c0 0+c+c1 1=1=1,产生了溢,产生了溢出。出。第91页,本讲稿共161页3 3采用双符号位进行判断采用双符号位进行判断符号位用两个符号位用两个0 0(表示正数)或两个(表示正数)或两个1 1(表示(表示负数)来表示。负数)来表示。两个符号位都看作为数码参加运算,若结两个符号位都看作为数码参加运算,若结果的两个符号位的值相同,则说明没有发果的两个符号位的值相同,则说明没有发生溢出;若
45、结果的两个符号位不同,则说生溢出;若结果的两个符号位不同,则说明发生了溢出。有如下两种情况:明发生了溢出。有如下两种情况:第92页,本讲稿共161页(1 1)运算结果的符号位为)运算结果的符号位为0101时,表明两个时,表明两个正数相加,结果大于机器所能表示的最大正数相加,结果大于机器所能表示的最大正数,称为上溢,即正溢出;正数,称为上溢,即正溢出;(2 2)运算结果的符号位为)运算结果的符号位为1010时,表明两时,表明两个负数相加,结果小于机器所能表示的最个负数相加,结果小于机器所能表示的最小负数,称为下溢,即负溢出。小负数,称为下溢,即负溢出。第93页,本讲稿共161页用用z z0 0来
46、表示最高符号位,来表示最高符号位,z z0 0表示第二个符表示第二个符号位,判断溢出的逻辑表达式为:号位,判断溢出的逻辑表达式为:v=zv=z0 0 z z0 0+z+z0 0 z z0 0 (3-83-8)若若v=1v=1,则说明运算结果出现溢出。,则说明运算结果出现溢出。第94页,本讲稿共161页 例例3-6 3-6 设设x=+1100 x=+1100,y=+1000y=+1000,求补码之和,求补码之和x+yx+y补。补。解解 利用双符号位表示,利用双符号位表示,xx补补=00 1100=00 1100,y y补补=00 1000=00 1000 因为因为z z0 0=0=0,z z0
47、0=1=1,所以,所以v=1v=1,产生溢出,而,产生溢出,而且是正溢出(且是正溢出(0101)。)。第95页,本讲稿共161页 例例3-7 3-7 设设x=-1100 x=-1100,y=-1000y=-1000,求补码之和,求补码之和x+yx+y补。补。解解 利用双符号位表示,利用双符号位表示,xx补补=11 0100=11 0100,yy补补=11 1000 =11 1000 最高位的最高位的1 1去掉,那么去掉,那么z z0 0=1=1,z z0 0=0=0,所以,所以v=1v=1,产生溢出,而且是负溢出(,产生溢出,而且是负溢出(1010)。)。第96页,本讲稿共161页从这个例子还
48、可以看出从这个例子还可以看出:最高位指出了溢出的正负。最高位指出了溢出的正负。若没有溢出的情况,最高位则指出了数码若没有溢出的情况,最高位则指出了数码的正负。的正负。在双符号位补码中,正常的数据中两个符在双符号位补码中,正常的数据中两个符号位总是相同的,所以在存储数据时不必号位总是相同的,所以在存储数据时不必存储双符号位,只是在将数据送往运算部存储双符号位,只是在将数据送往运算部件进行运算时才复制成双符号位。件进行运算时才复制成双符号位。第97页,本讲稿共161页3.3.3 舍入处理1.“0舍1入”法与十进制中的“四舍五入”类似:若第n+1位是“0”,则直接舍去;若第n+1位是“1”,则舍去第
49、n+1位,并在第n位做加“1”修正。2.末位恒置“1”法舍去第n+1位,并将第n位恒置“1”。第98页,本讲稿共161页3 3反码运算反码运算反码运算也与补码运算一样,两数和的反码等于两数的反码之和,两数差的反码可以用两数反码的加法来实现。反码加、减运算规则是 Nl+N2反=N1反+N2反 Nl-N2反=N1反+-N2反 运算时,符号位和数值位一样参加运算,如果符号位产生进位,则此进位应加到和数的最低位,称之为“循环进位”。运算结果符号位为O,说明是正数的反码,与原码相同。运算结果符号位为1,说明是负数的反码,应对结果再求反码才得原码。第99页,本讲稿共161页2.52.5数码和字符的代码表示
50、数码和字符的代码表示 2.5.12.5.1十进制数的二进制编码十进制数的二进制编码 1 1842lBCD842lBCD码码 各位的权从左到右分别为8,4,2,1,其按权展开式如下:N=a3W3+a2W2+a1W1+a0W0式中:a3,a2,a1,a0为各位的代码;W3,W2,W1,W0为各位的权值。842lBCD码的权为 W3=23=8 W2=22=4 W1=21=2 W0=20=1 例如,8421BCD码0111的按权展开式为 08+14+12+1l=7因此,代码0111表示十进制数码7。第100页,本讲稿共161页2 224212421码码 242l码和8421码相似,也是一种有权码,它用