《计算机组成原理(第四版)》第二章:运算方法和运算器.ppt
第二章 运算方法和运算器2.1数据与文字的表示2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算与浮点运算器返回5/15/2023 12.1数据与文字的表示方法数据格式数的机器码表示字符的表示汉字的表示校验码5/15/2023 22.1数据与文字的表示方法l 计算机中使用的数据可分成两大类:l 符号数据:非数字符号的表示(ASCII、汉字、图形等)l 数值数据:数字数据的表示方式(定点、浮点)l 计算机数字和字符的表示方法应有利于数据的存储、加工(处理)、传送;l 编码:用少量、简单的基本符号,选择合适的规则表示尽量多的信息,同时利于信息处理(速度、方便)5/15/2023 3数据格式一、复习10进制和R进制之间的转换R进制到10进制:10进制到R进制:整数部分:除r取余,r为进制基数小数部分:乘r取整5/15/2023 4数据格式二、数值数据计算机在数据、文字的表示方式时,应该考虑一下几个因素:表示的数据类型(符号、小数点、数值)数值的范围 数值精度 存储、处理、传送的硬件代价5/15/2023 5数据格式三、计算机常用的数据表示格式有两种:l 定点表示:小数点位置固定l 浮点表示:小数点位置不固定5/15/2023 6数据格式四、定点表示法l 所有数据的小数点位置固定不变l 理论上位置可以任意,但实际上将数据表示有两种方法(小数点位置固定-定点表示法/定点格式):l 纯小数l 纯整数l 定点数表示:l 带符号数l 不带符号数5/15/2023 71、定点纯小数x0 x1x2x3xn-1xn表示数的范围是0|12n(最小数、最大数、最接近0的正数、最接近0的负数)符号量值小数点固定于符号位之后,不需专门存放位置数据格式5/15/2023 8数据格式2、纯小数的表示范围5/15/2023 9数据格式3、定点纯整数x0 x1x2x3xn-1xn表示数的范围是0|2n1最小数、最大数、最接近0的正数、最接近0的负数呢符号量值小数点固定于最后一位之后,不需专门存放位置5/15/2023 10数据格式4、定点表示法的特点l 定点数表示数的范围受字长限制,表示数的范围有限;l 定点表示的精度有限l 机器中,常用定点纯整数表示;如果用定点表示,则如何表示实数(包括小数和整数)呢?-引入浮点5/15/2023 11数据格式五、浮点表示:小数点位置随阶码不同而浮动1、格式:N=RE.M2、机器中表示指数E基数R,取固定的值,比如10,2等尾数M阶符 阶码 数符 尾数 5/15/2023 12数据格式3、IEEE754标准(规定了浮点数的表示格式,运算规则等)l 规则规定了单精度(32)和双精度(64)的基本格式.l 规则中,尾数用原码,指数用移码(便于对阶和比较)5/15/2023 13数据格式IEEE754标准l 基数R=2,基数固定,采用隐含方式来表示它。l 32位的浮点数:l S数的符号位,1位,在最高位,“0”表示正数,“1”表示负数。l M是尾数,23位,在低位部分,采用纯小数表示l E是阶码,8位,采用移码表示。移码比较大小方便。l 规格化:若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是惟一的。尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。5/15/2023 14数据格式l 64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数x的真值为:x=(-1)S(1.M)2E-1023e=E-1023l 一个规格化的32位浮点数x的真值表示为x=(-1)S(1.M)2E-127e=E-1275/15/2023 15数据格式l 真值x为零表示:当阶码E为全0且尾数M也为全0时的值,结合符号位S为0或1,有正零和负零之分。l 真值x为无穷大表示:当阶码E为全1且尾数M为全0时,结合符号位S为0或1,也有+和-之分。l 这样在32位浮点数表示中,要除去E用全0和全1(25510)表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而选127(01111111)。对于规格化浮点数,E的范围变为1到254,真正的指数值e则为-126到+127。因此32位浮点数表示的绝对值的范围是10-381038(以10的幂表示)。l 浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择。而单片机中多采用定点表示。5/15/2023 16数据格式浮点数表示范围如下图所示5/15/2023 17数据格式例1若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:将16进制数展开后,可得二制数格式为010000010 01101100000000000000000S阶码(8位)尾数(23位)指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.01101100000000000000000=1.011011于是有x=(-1)S1.M2e=+(1.011011)23=+1011.011=(11.375)105/15/2023 18数据格式例2将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间10100.10011=1.01001001124e=4于是得到:S=0,E=4+127=131,M=010010011最后得到32位浮点数的二进制存储格式为:165/15/2023 19数据格式4、十进制数串的表示l 字符串形式l BCD(压缩)l 编码方式l 有权码:(8421码、2421码、5211码)l 无权码:(余三码、格雷码)l 自定义数据表示5/15/2023 20数的机器码表示一、数的机器码表示l 真值:一般书写的数l 机器码:机器中表示的数,要解决在计算机内部数的正、负符号和小数点运算问题。l 原码l 反码l 补码l 移码5/15/2023 211、原码表示法l 定点小数x0.x1x2xnx1x00,正x原=符号1-x0 x-11,负数l 有正0和负0之分l 范围2-n-11-2-n例:x=+0.11001110 x原=0.11001110-x原=1.110011105/15/2023 221、原码表示法l 定点整数X0X1X2Xnx2nx00,正数x原=符号2n-x0 x-2n1,负数说明:l 有正0和负0之分l 范围1-2n2n1l 例:x=+11001110 x原=011001110-x原=1110011105/15/2023 231、原码表示法原码特点:l 表示简单,易于同真值之间进行转换,实现乘除运算规则简单。l 进行加减运算十分麻烦。5/15/2023 242、补码表示法l 定义:正数的补码就是正数的本身,负数的补码是原负数加上模。l 计算机运算受字长限制,属于有模运算.定点小数x0.x1x2.xn溢出量为2,以2为模 定点整数x0 x1x2.xn溢出量为2,以2n+1为模l 定点小数x0.x1x2xnx1x00,正数x补=符号2+x0 x-11,负数5/15/2023 252、补码表示法例:x=-0.1011l x补=10+x=10.0000-0.1011=1.0101l y=-0.01111l y补=10+y=10.00000-0.01111=1,10001l 定点整数x0 x1x2xnx2nx00,正数,0 x补=符号2n+1+x0 x-2n1,负数5/15/2023 262、补码表示法l 补码性质l 高位表明正负l 正数补码,尾数与原码相同l 范围-2n2n-1(定点整数)l 变相补码(双符号补码)l 为了防止溢出而设定5/15/2023 272、补码表示法l 最大的优点就是将减法运算转换成加法运算。X补-Y补=X补+-Y补例如X=(11)10=(1011)2Y=(5)10=(0101)2已知字长n=5位X补-Y补=X补+-Y补=01011+11011=100110=00110=(6)10注:最高1位已经超过字长故应丢掉l 无正零和负零之分l 但是,在求补码还要减法,电路繁琐,下面的反码表示解决着个问题。5/15/2023 283、反码表示法l 定义:正数的表示与原、补码相同,负数的补码符号位为1,数值位是将原码的数值按位取反,就得到该数的反码表示。l 电路容易实现,触发器的输出有正负之分。5/15/2023 293、反码表示法l 对尾数求反,它跟补码的区别在于末位少加一个1,所以可以推出反码的定义l 定点小数x0.x1x2xnx1x0 x反=2+x2-n0 x-1X1=+0.1011011,X1反=0.1011011X2=-0.1011011,X2反=1.01001001.11111110.10110111.01001005/15/2023 303、反码表示法l x补=x反+2-n(证明见书)l 反码表示有正0和负0之分l 上述公式解决了前边的问题(求补码还要减法)l 定点整数的反码定义见书5/15/2023 314、移码表示法l 移码表示法(用在阶码中)l 定点整数定义x移=2n+x2nx-2nl 0000000011111111(-2n2n-1)l 例+1011111原码为01011111l 补码为01011111反码为01011111l 移码为110111115/15/2023 324、移码表示法例-1011111原码为11011111补码为10100001反码为10100000移码为00100001特点:移码和补码尾数相同,符号位相反范围:-2n2n-1P22浮点IEEE754表示e=-127+12800000000阶码表示数字”0”,尾数的隐含位为011111111阶码表示数字”无穷大”,尾数的隐含位为0p21例3-95/15/2023 33例6以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。5/15/2023 34例7将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。5/15/2023 35例8设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?(1)定点原码整数表示最大正数值(2151)10(32767)10最小负数值(2151)10(32767)10(2)定点原码小数表示最大正数值(1215)10(0.111.11)2最小负数值(1215)10(0.111.11)2注:1符号,数字5/15/2023 36例9假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为(非IEEE754标准):(1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?(1)最大正数011111111111111111111111111111111(12-23)2127(2)最小正数000000000000000000000000000000001.02128(3)最小负数111111111111111111111111111111111(1223)2127(4)最大负数100000000000000000000000000000001.021285/15/2023 37字符和字符串(非数值)的表示方法l 符号数据:字符信息用数据表示,如ASCII等;l 字符表示方法ASCII:用一个字节来表示,低7位用来编码(128),最高位为校验位,参见教材P24表2.1l 字符串的存放方法CAI5/15/2023 38汉字的存放l 汉字的表示方法(一级汉字3755个,二级汉字3008个)l 输入码l 国标码 一级(1655)*94 二级(5687)*94 图形符号(682个)(0109)*94l 拼音、五笔l 汉字内码:汉字信息的存储,交换和检索的机内代码,两个字节组成,每个字节高位都为1(区别于英文字符)5/15/2023 39汉字的存放l 汉字字模码:汉字字形l 点阵l 汉字库5/15/2023 40校验码l 校验码(只介绍奇偶校验码)l 引入:信息传输和处理过程中受到干扰和故障,容易出错。l 解决方法:是在有效信息中加入一些冗余信息(校验位)l 奇偶校验位定义l 设(01n1)是一个n位字,则奇校验位定义为:C01n1,式中代表按位加,表明只有当中包含有奇数个1时,才使C1,即C0。同理可以定义偶校验。l 只能检查出奇数位错;不能纠正错误。l p26例10自己看一下。l 其它还有Hamming,CRC5/15/2023 412.2 定点加法、减法运算补码加减法溢出检测基本的加法和减法器十进制加法器5/15/2023 42补码加减法l 补码加法公式:x+y补=x补+y补l 补码减法为了将减法转变为加法,需证明公式:x-y补=x补+-y补(证明)为了求得同时-y补,需要证明-y补=乛y补+2-n(意义是-y补等于y补取反,末位加1)5/15/2023 43补 补 补证明l 假设1,1,1l 现分四种情况来证明(1)0,0,则0补=x,补=y,补=x+y所以等式成立.(2)0,0,则0或0时,2()2,进位2必丢失,又因()0,故 补 补 补当0时,2()2,又因()0,故 补 补2()补所以上式成立5/15/2023 44补 补 补证明(3)0,则0或 0这种情况和第2种情况一样,把和的位置对调即得证。(4)0,0,则0相加两数都是负数,则其和也一定是负数。补2,补2 补 补222(2)上式右边分为”2”和(2)两部分.既然()是负数,而其绝对值又小于1,那么(2)就一定是小于2而大于1的数,进位”2”必丢失.又因()0,所以 补 补2()补5/15/2023 45补码加减法l 如:y=0.0111y补=0.0111-y补=1.1001从右边到左边,除了第一个1和右边的0保持不变以外,其它按位取反,很重要!5/15/2023 46补码加减法例x=-0.1011,y=0.0111x补=1.0101y补=0.0111x+y补=x补+y补=1.0101+0.0111=1.1100 x+y=-0.0100例x=+0.11011,y=-0.11111x补=0.11011y补=1.00001-y补=0.11111x-y补=x补+-y补=1.110105/15/2023 472.2.2 溢出的检测l 溢出的检测l 可能产生溢出的情况l 两正数加,变负数,上溢(大于机器所能表示的最大数)l 两负数加,变正数,下溢(小于机器所能表示的最小数)5/15/2023 482.2.2 溢出的检测课堂作业:例3:0.1011,0.1001,求例4:0.1101,0.1011,求5/15/2023 49