1、第二章第二章 运算方法和运算器运算方法和运算器2.1 2.1 数据与文字的表示方法数据与文字的表示方法2.2 2.2 定点加法、减法运算定点加法、减法运算 2.3 2.3 定点乘法运算定点乘法运算2.4 2.4 定点除法运算定点除法运算2.5 2.5 定点运算器的组成定点运算器的组成2.6 2.6 浮点运算方法和浮点运算器浮点运算方法和浮点运算器本章小结本章小结相关链接相关链接 2.1、进位计数制2.2、带符号数的表示(编码系统)2.3、数的定点表示与浮点表示2.4、补码运算基础第一节 数据信息的表示第一节 数据信息的表示 指令 控制信息 (指挥计算机操作)控制字 计算机数的信息 定点数 数值
2、数据 浮点数 数据信息 (计算机加工的对象)字符串 非数值数据 数字串数值数据有确定的数值,能表示该数的大小,能在数轴上找到确定的点。表示一个数值数据有三个要素:进位计数制(数的进位系统)采用某种进位制,系统便规定了可使用的数字符号的个数 符号(数的编码表示:原码、补码、反码、移码)符号的处理导致机器数的编码表示的不同 小数点(定点、浮点)小数点位置的浮动性决定了数的表示范围第一节 数据信息的表示非数值数据不含有“值”的数据。包括两种:逻辑数据和字符数据。在机器数也用二进制数码串表示,可视做非结构化的二进制数,即没有上面三个要素含义的二进制数。第一节 数据信息的表示字符:需哪些常用标准字符?如
3、何表示这些字符?如何信息编码的长度?信息表示的可靠性 检验码方法 信息在存储和传送过程中可能出错,能否识别并自动纠正它?第二节 数据信息的表示 2.1.1 进位计数制一、一、进位计数制的基本概念进位计数制的基本概念二、二、计算机中常用的进位计数制计算机中常用的进位计数制 三、三、各种数制间的互相转换各种数制间的互相转换返回总目录返回总目录2.1.1 进位计数制的基本概念 R进位计数制的数:基数为R,按“逢R进一”的进位计数制组成的数字序列。使用0(R-1)个数字符号。eg:二进制数字系统:基数R=2,使用的数字符号0、1;十进制数字系统:基数R=10,使用的数字符号0、1、2、3、48、9 权
4、:数字序列中,一个数字符号处于不同的位置时,所含的值是不同的,这个值 等于该数字符号乘上它所在位置的权。权是一个指数,底是进位基数R,是 序号。数K和它的值 可用下列公式表示:k=.=其中:是第i位的权,m,n为正整数,而0 R,即为0,1,.(R1)中的1个()RS()RS1nnK K012K K KmK10121012.nnmnnmK RKRK RK RK RKR01nmiiiiiiK RK RniiimK RiRiK返回2.1.2 计算机中常用的进位计数制 1.二进制 计算机采用二进制表示的理由:二进制表示便于物理实现 具有两个稳定状态的物理器件很多,他们恰好对应表示1和0两个数字;且可
5、以用简单的 方式存储和传送。二进制表示能节省器材和设备 若采用十进制,需要制造具有稳定状态的物理电路,很难;而用四个具有两种状态的物 理电路就能组合表示16中二进制编码,可用其中十个编码表示十进制的数,从这个意义 上,二进制能节省设备 二进制数运算简单 数与数之间的运算用器件或电路容易实现但是二进制表示也存在着缺点:它表示数的容量较小返回二进制以2为基数,逢2进位。任意一个二进制数可用多项式表示为:n位无符号二进制整数所能表示的范围是0 ;n位二进制代码所能表示的状态组合是 种。2.八进制 3.十六进制4.十进制采用二进制计数制,对计算机来说,运算、存储和传送极为方便。然而对人来说,二进制书写
6、起来很不方便。采用八进制、十六进制,多被用于指令的书写、目的程序的输入或输出。101221012()22.222.22nnnminnmiimSKKKKKKK(21)n2n返回2.1.3 各种数制间的互相转换1.二、八、十六进制的互相转换 由于这三种进位制的权之间有存在的联系,2,;这样每一位八进制数相当于三位二进制数,每一位十六进制数相当于四位二进制数。在转换中,位组的划分是以小数点为中心向左右两边延伸,八进制按三位划分,十六进制按四位划分,不够者补齐0。Eg:=2.二进制、十进制的互相转换二进制 十进制 按权相加法:将各位数字与它的权相乘,其积相加,和数即为转换结果。eg:二进整数 十进整数
7、的逐次乘基相加法 自阅 二进小数 十进小数的逐次除基相加法8(375.236)16(70.4)F3210123210(1011.011)1(2)0(2)1(2)1(2)0(2)1(2)1(2)(1 1.375)32422(11,111,101.010,011,11)2(111,1101.0100,1111)返回十进制 二进制 将十进制数分成整数与小数两个部分分别转换,然后再拼接起来,即可实现。a.十进制整数 二进制整数 除基取余法 法则:由 同除2:若余数为0,表明 =0;若余数为1,表明 =1。继续对商除以基数2,则可依次判定 等各项系数。法则:将十进制整数除以2,得到商和余数,余数对应为二
8、进制数低位的值;继续对 商除以2,如此继续直到商等于0为止,所求各次余数就是所求二进制数的各位 值(最后余数为最高位的值)。11011022.22nnnnSKKKK120011(22.2)22nnnnKSKKK0K0K1KnK返回 eg:2 57 2 28 余1 底位 2 14 余0 2 7 余0 2 3 余1 2 1 余1 0 余1 高位 10(57)2(?)10(57)2(111001)返回b.十进制小数 二进制小数 乘基取整法 推导:由 同乘基数2:若 =0,则2S仍为小数;若 =1,则2S出现整数1的部分。重复上述将小数部分乘以2的操作,将能根据各次是否出现整数部分而依次判定 法则:用
9、基数2去乘二进制纯小数;去掉乘积的整数部分,再用2去乘余下的纯小数部 分,如此继续,直到乘积部分为整数(小数部分为0)或已满足要求的精度为止 eg:20.8125=1.625 1 20.625=1.25 1 20.25=0.5 0 20.5=1 1 121222.2mmSKKK11122(2.2)mmSKKK1K1K2KmK10(0.8125)2(?)1K2K3K4K102(0.8125)(0.1101)返回 eg:20.5627=1.1254 1 20.1254=0.2538 0 20.2508=0.5016 0 20.5016=1.0032 1 20.0032=0.0064 0 20.00
10、64=0.0128 0 由于实际机器所表示的数都有一定的位数,应转换到机器可能表示的精度时为止。eg:将转换后的整数与小数两部分拼接起来,既为所求答案。十进制整数 二进制整数 自阅 的减权定位法 十进制小数 二进制小数10(0.5627)2(?)1K2K6K102(0.5627)(0.100100.)102(41.6875)(101001.1011)返回 2.1.2 带符号数的表示(编码带符号数的表示(编码系统)系统)一、一、真值与机器数真值与机器数二、二、原码表示法原码表示法 三、三、补码表示法补码表示法四、四、反码表示法反码表示法返回总目录返回总目录 计算机中,数是以二进制形式存放的,二进
11、制数码1和0分别对应一位寄存器的两种不同的状态。若数符也能用寄存器的两种状态来表示的话,机器就能识别和表示符号了问题:数字化后的符号能否作为数一样参加运算?解决:对计算机的数据加以定义,改造成机器内部的运算结构,即数的编码表示,为此 研究出了一套完整的处理非符号数的二进制编码表示系统码制。返回2.2.1 真值与机器数 真值按一般书写形式(用正负符号加绝对值表示数的大小)表示的原值。机器数连同数符一起数码化的数。即:机器内部编码表示的数。返回2.2.2 原码表示法 符号位为0,表示该数为正用最高位表示符号 符号位为1,表示该数为负有效数值部分则用二进制的绝对值表示。定点小数、定点整数的原码表示定
12、义:1.定点小数:设原码形式为 ,则 x 1x0 x =1-x=1+|x|0 x-1 012.nxx xxxxoo-11.1111.0000.0000.111-0+0+1(1 2)n(1 2)n原原返回讨论:当x为正时,x 与省略了正号的真值在表示形式上完全一致;当x为负时,x 与真值在表示形式上的区别仅是符号位为1。真值0在原码表示中可以有两种形式:0.000与1.000。运算方法:原码较直观,运算结果会一目了然。用原码作乘除运算时,可取其绝对 值运算而符号单独按异或逻辑运算处理,故较方便;但对用得最多的加减运算,不仅需根据操作码,还要根据两数的符号才能实际的操作性质,这时原码表示就不很方便
13、了。2.定点整数:设原码形式为 ,则 x x0 x =0 x22|nnxx0121.nnx x xxx2n2nxx-0+0-1+11111110001 1000000000 0000101111(21)n21n原原原原返回2.2.3补码表示法1.补码表示的方法 化“减”为“加”对负数的表示方法作适当的变换 eg:时钟 “同余”的概念:设两整数a、b可用同一个整数M去除而余数相同,则称a、b对M 同余。记做a=b(mod M)时钟以12为模,有 ,111(mod12)我们说1与11对模12互补,或1的补码(以12为模)是11。计算机的运算受一定字长的限制,属于有模运算。模:一个计数器的计数容量,
14、或者溢出量。定点小数 ,溢出量为2,以2为模;定点整数 ,连符号位字长(n+1)位,溢出量为 ,故以 为模。这种定义模的方式相当于把符号也看成一位数字。11111212 12n12n012.nxx xx0121.nnx x xxx返回2.补码的定义 确定模后,我们将某数x(真值)对该模的补数称作其补码,定义如下:x =M+x (mod M)若x0,则模M作为溢出量可以舍去,因而整数的补码就是它本身,形式上与补码相 同。eg:x=0.101,则 x =2+0.101=0.101 (mod 2)若xx0 x =(mod 2)2+x=2-|x|0 x-1若定点整数补码形式为 ,则 x x0 x =(
15、mod 2)0 x2n2n1122|nnxx012.nxx xx0121.nnx x xxxxx-10.1111.0011.00001.11 0.000 0.001(1 2)n12n2n2nxx01111001100+1-1000 0010112n(21)n21n补补补补返回3.补码的性质 在补码表示中,最高位 表明了该数的正负。若 0,则真值x0;若 =1,则真值x0。这一点与原码表示方法相同。正数的补码表示,其尾数在形式上与原码相同;而负数的 补码表示,尾数形式与原码不同。后面分析其变化规律。0 x0 x0 x返回从上面用数轴表示的定点数补码的表示范围和可能的数码组合情况看:a.与原码不同
16、,在补码中“0”只有一种表示形式 0.00(定点小数),000(定点整数)b.用补码表示负数,其范围可到-1(定点小数),或者 (定点整数),比原码表示范围多一种数码组合。注意:原码定义式与补码定义式(定点数)在数域划分上的区别。将负数x的真值与其补码x 作一映射图,可看出:负数补码表示的实质是将负数“映射”到正数域,因而实现了化“减”为“加”简化运算的目的。2n补返回0.111.001.0011.110-1(1 2)n(1 2)n0Fig.定点小数补码与真值运算图xx2n2n0.001o2正数 0.xx负数 1.xxReplay补开始下一步结束 返回1001100111-011-100-00
17、102n21n21n2n121nFig.定点整数补码与真值映射图xxo-1021n12n正数 0 xx负数 1xxReplay补开始下一步结束返回说明:以定点整数的映射图为例a.对于模 数轴所赋予的两种不同解释:是全部赋予正数 0 0 赋予正数 0 赋予负数 1 正数各占一半 符号位0为正,1为负,b.在引入模 后,以x =+x表示负数x,实质上是将负数x向正轴方向平 移 ,这样负数x被映射到正域中,于是减一个正数(即加一个负数)被转化为加另一个正数,这正数就是负数补码的映射值。c.从表明真值的正负这一角度,最高位x0被当作符号位;从映射结果看,x0是映射值中 的一个数位。因而在补码运算中符号
18、位x0应当而且可以象数码部分那样参加运算,这 是补码运算法则中的一个关键1(21)n12n(21)n21n2n1(21)n2n12n12n12n补返回4.由真值、原码转换为补码 可根据补码定义式进行 eg:1.x=0.1010 x =x =0.1010 2.x=-0.1010 x =1.1010 x =2+x=2-|x|=2-0.1010=1.0110 由原码 补码时,应注意符号位保持不变,而尾数的变化如下:规律一:“变反加一”当x0,则x0=0,x=0.x1x2xn=若xx0 x =相当于mod ()+x 0 x-1 定点整数:反码形式 ,则 x x =相当于mod ()+x 22n121n
19、012.nxx xx0121.nnx x xxxxxxx1.000-0+01.1110.0000.111-0.11112n 1 2n+0-0+1-1100011101110000001011-11-00121n21n20nx02nx 1(21)n(22)n反反反反返回由此:在形式上反码最高位x0表明数的正反,这点与原码、补码相同;而尾数则为原码各位的反变量。若x =则x =反码表示中,”0“有两种表示:1.11与0.00(定点小数),一般只用负0表示0。12.snxx xx12.snxx xx原反返回关于本节2.2的总结:正数的编码就是真值本身,仅符号位取0;对负数,有三种不同的编码表示。或者
20、,正整数的三种编码都具有相同的真值;负整数的三种编码所含的真值各不相同。对负数:x 和x 符号相同,但数值恰好相反x =1000时,真值x=-8,这为特殊情况,权为 位的1既代表符号又代表数值。掌握 这点对加深和运用补码有益。数0的三种编码表示 数0作为一个数出现在正数与负数的交界。数0划在正数的范围内,记做+0,三种编 码完全一样。数0划在负数范围,记做-0,它的编码要遵循负数编码的定义。具体地讲:+0的三种表示为数0本身。在补码表示中,+0与-0表示完全一样,机器不 需识别0的符号;在原码表示中,+0与-0表示仅只符号位相反,数值是一样的;在反 码表示中,-0的表示正好是+0的反码。机器若
21、采用后两种编码表示,会引起对数0符 号位识别的麻烦。32反反原返回以4位(含符号位)整数的3种编码表示为例 X的编码 真值 原 反 补 0 1 1 1 +7 +7 +7 0 1 1 0 +6 +6 +6 0 1 0 1 +5 +5 +5 0 1 0 0 +4 +4 +4 0 0 1 1 +3 +3 +3 0 0 1 0 +2 +2 +2 0 0 0 1 +1 +1 +1 0 0 0 0 +0 +0 +0 1 0 0 0 -0 -7 -8 1 0 0 1 -1 -6 -7 1 0 1 0 -2 -5 -6 1 0 1 1 -3 -4 -5 1 1 0 0 -4 -3 -4 1 1 0 1 -5
22、-2 -3 1 1 1 0 -6 -1 -2 1 1 1 1 -7 -0 -10 x1x2x3x返回 2.1.3 数的定点表示与浮点数的定点表示与浮点表示表示一、一、定点表示法定点表示法二、二、浮点表示法浮点表示法 三、三、移码(增码)移码(增码)四、四、定点表示与浮点表示的比较定点表示与浮点表示的比较返回总目录返回总目录2.3.1 定点表示法 约定机器中所有数据的小数点位置固定不变 1.定点小数 约定小数点在最高数位之前,符号位之后,即参与运算的小数是纯小数,记做 三种编码的表示范围:原码 1.11x0.111 反码 1.00 x0.111 补码 1.000 x0.111(1 2)(1 2)
23、nnx(1 2)(1 2)nnx1(12)nx 012.nxx xx0 x1x2xnx符号位小数点位置数值部分(尾数)上溢区(溢出)负数区上溢区(溢出)正数区下溢区(机器0)0.001.0011.00001.1110.0010.11112n 2n2n1 2n返回2.定点整数 约定小数点在最低位之后,即参与运算的数是纯整数,记做:表示范围:原码:1111x0111 反码:1000 x0111 补码:1000 x0111(21)(21)nnx(21)(21)nnx2(21)nnx0 x1x2xnx符号位整数部分(尾数)小数点位置0121.nnx x xxx返回3.比例因子 定点计算机在硬件设计上着
24、眼于处理定点数,它可处理的定点数分为三类:无符号整数(相当于不设符号位的正整数);带符号的定点整数;带符号的定点小数 选择哪一种数是在程序中约定的,硬件上并无区别。由于实际处理的一个数可能即有整数部分又有小数部分,为将它变为约定的定点数形 式,就需在编制程序时设定一个比例因子,把数缩小为定点小数或扩大为定点整数,所得到的运算结果再根据比例因子与操作类型(缩小、扩大)还原为实际的数值。eg:010.01+01.100 =(0.1001+0.0110)=(01001+00110)问题:比例因子选择不恰当时,数的表示范围与数的有效精度矛盾。eg.在变为定点小数时缩小比例不够大,运算结果可能出现等于或
25、大于参数1的情况,即产生溢出,需要处理;反之,若缩小比例过大,将会损失有效精度。在变为定点整数时也有同样的问题。2222返回2.3.2 浮点表示法 将比例因子以恰当的形式表示在数之中(小数点位置不固定,根据需要而浮动。浮点表示法的依据:数值范围很大的数其有效数位并不一定很多。1.浮点数的格式:浮点数的真值:其中:R阶码的“底”,是事先隐含约定的,一般选得与尾数的基数相同。J阶码,为整数,一般用移码或补码表示。如用补码表示,则设置符号位 表示本身的正负。:数符,表明数的正负,S1Sn构成尾数W,一般是小于1的小数,可用补码或原码表示。阶符数符阶码J尾数SJfJ1J2JsSfS1S2SnSmJJN
26、RS JSRW fJfS返回2.浮点数的格式化操作:数S的范围主要由阶码决定,阶码相当于定点数中所取的比例因子,但它表示为浮点 数的一部分,可以浮动。有效数字的精度则主要由尾数决定,为充分利用尾数的有 效位数(格式化),令尾数的绝对值限定在某个范围内,或者使尾数最高位具有非 0的数字。对于正数,规格化尾数最大值为0.111 最小值为0.100 对于负数,规格化尾数(以补码表示)最小值为1.000 最大值为1.011 其中,我们把1.100除外,因为它刚好是 ,为使机器能准确判别,在补码表示 中,约定不把 列入规格化尾数。112W112W 1212返回格式化后的浮点数数值范围(补码格式化):上溢
27、区下溢区上溢区负数区正数区1.00000002011111111.01111112100000000.1000000210000000.1111111201111111返回2.3.3 移码(增码)主要用于浮点阶码的运算移码的引出:浮点表示的阶码是一个正整数或一个负整数,在对两个浮点数进行相加或 相减之前,必须先对它们的阶进行比较,用移位的方法使两阶码相等。为简化比较 操作,使它不牵涉到阶码的符号,方法之一是绕过符号问题,对每个阶码都加上一 个足够大的正的常数,使所有的阶码都转化为正整数,可以形成移码,这就消除了 计算过程中阶符的影响。这个足够大的正的常数等于最负阶码的绝对值。移码的定义:设定点
28、整数移码的形式为x0 x1x2xn,则 x 式中x 为机器数,x为真值 eg.某机浮点数的阶码共8位(含一位符号位),则用移码表示 x 2nx72xxx02n121n21n2n移移移移返回移码的性质:当xy0 则y =y =0.y1y2yn=|y|由原码与真值间的关系:-y =1.y1y2yn -y =2-|y|=2-0.y1y2yn =0y-1 若y 由y 2y y=y -2=121.11.120.nny yy121.2nny yy121.ny yy12(2 1.)ny yy12(1.11.121.)nny yy12(0.2)nny yy补补补补补补补补补补补原原返回 -y=0y-1 y 结
29、论:不管y的真值为正或为负,已知y 求-y 的方法都是:将y 连同符号位 一起变反,末尾加“1”(在定点小数中这个“1”是 )eg:1 (y)=0.10111 则(-y)=1.01001 (y)=1.01101 则(-y)=0.10011 eg:2 x=+0.1101,y=+0.0110,(x-y)=?解:x 0.1101 y 0.0110 -y 1.1010 x 0.1101 y 1.1010 x-y 100111 x-y=0.0111 eg:3 x=-0.1101,y=-0.0110,x-y=?解:x 1.0011 -y 0.0110 x-y 1.1001 x-y=-0.0111120.2
30、nny yy120.2nny yy补补补补补补补补补补补补补补补补补返回2.4.2 补码运算的基本法则1.补码运算基本约定:参与运算的各操作数均用补码表示 数符作为数的最高位参与运算 将减数变补,y -y ,以求和代替求差 运算结果为补码表示2.符号位处理规律 关键:可将符号位作为数的一部分参与运算吗?计算机的运算是有模运算,以补码表示 数的实质是将 数映射到正数域,即较大的 负数对应的补码也较大,故符号位已看作数的一部分,因此符号位应参与运算。补补返回下面分析补码运算中的一些典型情况,归纳出符号位处理的规律。以定点整数为例,定义最高位为符号位,次高位为最高有效位(表明数值部分的最高 位),超
31、出模的部分在运算后将被舍去。两数均为正。运算中最高有效位无进位,运算结果为正 则 两数均为正。运算中最高有效位有进位,则正溢 则 正溢两数均为负。运算中最高有效位有进位,运算结果为负 则两数均为负。运算中最高有效位无进位,则负溢 则 负溢两数异号。运算中最高有效位有进位,运算结果为正 则两数异号。运算中最高有效位无进位,运算结果为负 则0,0,0,ABSSC0,0,1,ABSSC1,1,1,ABSSC0,1,1,ABSSC1,0,1,ABSSC1,1,0,ABSSC0,1,0,ABSSC1,0,0,ABSSC0fS fS1fS 0fS 1fS fS返回9+3=12 11+7=18 (-9)+(
32、-3)=-12 01001 01011 10111 +00011 +00111 +11101 01100 10010 110100(-11)+(-7)=-18 9-3=6 3-9=-6 10101 01001 00011 +11001 +11101 +10111 101110 100110 11010返回表明:让符号位参与运算能得到以补码表示的正确结果,包括正数或负数结果 (溢出问题下面专门讨论)如果先不考虑符号位参与运算,上面例子也表明:可根据两数的数符 和最高有效位是否有进位C来判断结果符号,由真值表有:上式为一全加器逻辑,与让符号位参与运算的规定完全吻合。这样我们就从补码性质和结果数符判
33、别两个方面说明了符号位参与运算的正确性。fABSSSC返回2.4.3 溢出判断与变形补码溢出判断的必要性:溢出是指计算结果超出计算装置容量。选定了字长并选定了某种数据表示格式后,所能表示的数据范围也就相应确定。一旦运算结果超出所能表示的范围,溢出部分将被丢失,留下来的结果将不正确。如果只有一个符号位,溢出还将使结果符号发生错乱。所以有必要解决溢出判断问题,使计算机据此做出相应的反应,如何并显示溢出,或通过溢出处理程序自动地修改比例因子然后重新运算。溢出判断方法:1.硬件判断逻辑之一 溢出=其中:为参与运算的操作数数符;为结果数符 说明:两正数相加即 ,本应得到正的和数,若由于最高有效位产生进位
34、而使 ,表示正溢;两负数相加即 ,本应得到负的和数,若由于最高有效位无进位而使 ,表明产生负溢。ABfABfS S SS S S,ABSSfS0ABSS1fS 0fS 1ABSS返回2.硬件判断之二 分析2.4.2节例子还可发现:当最高有效位产生进位而符号位无进位(正溢),或最高有效位无进位而符号位有进位(负溢)时,表明有溢出,故:溢出3.变形补码(多符号位)一个符号位只能表明正、负两种情况,当产生溢出时会令符号位的含义产生混乱。若将符号位扩充为两位,使其所能表示的信息量扩大,就能判断是否有溢出以及结果的正确符号。0fCC返回分析采用双符号位后的溢出情况:11+7=18 (-11)+(-7)=
35、-18 001011 110101 +000111 +111001 010010 1101110上例表明:有溢出时结果的两个符号位将不一致。可定义双符号位的含义如下:00结果为正,无溢出 01结果正溢 10结果负溢 11结果为负,无溢出返回采用双符号位后可得到又一判断逻辑式:溢出说明:多符号位的实质是扩大了模M。如果用双符号位的定点小数 ,其模M=4,被称做变形补码,其定 义如下:S 2S0 S (mod 4)4+S 0S-2 或x +y =x+y (mod 4)同样成立,为了得到两数变形补码之和等于两数和的 补码,同样必须:两个符号位都看作数码一样参与运算 两数进行以4为模的加法(仍是二进制
36、),即最高符号位上产生进位要丢掉。12ffSS补补补补返回XX0-1000.01.0010.0011.0011.11.111正溢正溢负溢负溢42n221-21 2n2n13补00.1100.xx11.xx开始下一步结束Replay返回由上图,采用变形补码后,任何小于1的正数,两个符号位都是“0”,即 ;任何大于1的负数,两个符号位都是“1”,即 。如果两数相加后,其结果的符号出现“01”或“10”两种组合时,表示发生溢出。另:不管结果是否有溢出,第一符号位 将能指示结果的正负。类似地,双符号位的定点整数 ,其模 ,变形补码定义为:S S (mod )1fS1212.ffnS S S SS121
37、1.nS SS1200.nS SS22nM220nS22n22nS202nS 补返回XX12n2n0-12n12n00000110100100011001111112n12n221n3 2n正溢正溢负溢负溢21n补开始下一步结束Replay返回2.4.4 移位 逻辑移位:只有数码位置的变化而无数量概念的变化 算术移位:数符不变,数量发生变化1.以原码表示的正、负数的移位规则(含以补码或反码表示的正数):左移:操作前 操作后 若左移无溢出,表明原最高有效位x1=0;若x1=1,左移将产生溢出,这在 算术移位中是不允许的。右移:操作前 操作后2.以补码表示的负数 左移:符号位不变,尾数最低位补0
38、操作前 操作后12321.snnnx x x xxxx12321.snnnx x x xxxx2341.0snnx x x xxx123210.snnnxx xxxx01221.nnnx x xxxx0231.0nnx x xxx返回若左移后不产生溢出,则x1=1,所以让x1向符号位移位,其效果相当于符号位保持1不变。若x1=0,左移会溢出,即不应左移。右移:符号位不变,最高有效位补1 操作前 操作后补码最高有效位补1 原码移位中的补0(注意对比正数右移和负数右移)3.以反码表示的负数 左移:末位补1 操作前 操作后 只要最高有效位为1,溢出后不会造成有效数字丢失。否则会出错。右移:最高有效位
39、补1(同补码)操作前 操作后01221.nnnx x xxxx013211.nnnx xxxx01221.nnnx x xxxx01221.nnnx x xxxx0231.1nnx x xxx013211.nnnx xxxx返回2.4.5 舍入 舍入原因:受位数限制 舍入原则:应使本次舍入所造成的误差和按此规则产生的累计误差都较小1.原码与补码采取“0舍1入”,负数反码采取“1舍0借”2.原码与补码采取末位“恒置1”,负数反码采取末位“恒置0”返回一一、补码加法补码加法返回退出下一页下一节加法公式:补补补 (mod 2)(2.17)加法法则:1、符号位一起参加数的运算;2、超过2的进位要丢掉。
40、(即在模2下相加)例8 0.1001,0.0101,求。解 例9 0.1011,0.0101,求。解例8 0.1001,0.0101,求。解:补0.1001,补0.0101 补 0.1001补 0.0101补 0.1110 所以 0.1110 一、一、补码加法补码加法返回一、一、补码加法补码加法补 10.0110 例9 0.1011,0.0101,求。解:补0.1011,补1.1011 补 0.1011 +y补 1.1011 所以0.0110返回二、二、补码减法补码减法返回退出上一页下一页下一节例10 已知10.1110,20.1101,求:1补,1补,2补,2补。解 例11 0.1101,0
41、.0110,求。解减法公式:补补补补补 (2.18)补 补求补=补 2n 求补法则:所有位(包括符号位)取反,末位加1.返回例10 已知10.1110,20.1101,求:1补,1补,2补,2补。解:1补1.00101补1补2-40.11010.00010.11102补0.11012补2补2-41.00100.00011.0011二、二、补码减法补码减法例11 0.1101,0.0110,求。解:补0.1101 补0.0110,补1.1010 补0.1101补1.1010补 10.0111 所以0.0111二、二、补码减法补码减法返回三、三、溢出概念与检测方法溢出概念与检测方法退出上一页下一页
42、下一节1、溢出溢出-运算结果超出定点数的表示范围。如:定点小数机器中,数的表示范围为|1.因此,如果运算结果1,则超出定点小数机的 表示范围,称为上溢上溢;如果运算结果小于-1,也超出范围,称为下溢下溢。上溢:上溢:两个正数相加,结果超出最大表示范围。(上限)下溢下溢:两个负数相加,结果超出最小表示范围。(下限)例:字长8位-10127/128例13 0.1101,0.1011,求。解 例12 0.1011,0.1001,求。解返回例12 0.1011,0.1001,求。解:补0.1011 补0.1001补 0.1011 补0.1001 补1.0100 两个正数相加的结果成为负数,这显然是错误
43、的,正溢。三、三、溢出概念与检测方法溢出概念与检测方法返回三、三、溢出概念与检测方法溢出概念与检测方法返回例13 0.1101,0.1011,求。解:x 补1.0011 y 补1.0101 x 补1.0011 +y 补1.0101 x+y 补 0.1000 两个负数相加的结果成为正数,这同样是错误的,下溢。三、三、溢出概念与检测方法溢出概念与检测方法返回退出上一页下一页下一节2、检测溢出的方法:方法1:“双符号位法”即“变形补码”或“模4补码”补码的符号位用两位表示。例14 0.1100,0.1000,求。解 例15 0.1100,0.1000,求。解结论:Sf1Sf2 1时,溢出;Sf1Sf
44、2 0时,不溢出。(其中Sf1、Sf2是最高两位符号)例14 0.1100,0.1000,求。解:补00.1100,补00.1000 补 00.1100补00.1000 01.0100 两个符号位出现“01”,表示已溢出,即结果大于1。三、三、溢出概念与检测方法溢出概念与检测方法返回例15 0.1100,0.1000,求。解:补11.0100,补11.1000 补 11.0100补11.1000 10.1100 两个符号位出现“10”,表示已溢出,即结果小于1。三、三、溢出概念与检测方法溢出概念与检测方法返回三、三、溢出概念与检测方法溢出概念与检测方法2、检测溢出的方法:方法2:“单符号位法”
45、CfCo 1时,溢出;CfCo 0时,不溢出;其中:Cf为符号位产生的进位,Co为最高有效位产生的进位。在定点机中当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出,并进行中断处理。返回退出上一页下一页下一节1、补码二进制加法/减法器的结构:四、基本的二进制加法四、基本的二进制加法/减法器减法器图2.2(a)全加器返回退出上一页下一页下一节由n个1位的全加器(FA)经进位位相连而成;Sn-1 S0为结果输出端;An-1 A0为操作数A,直接送入FA的输入端;Bn-1 B0为另一操作数B,经异或门处理后才送入FA的输入端。返回退出上一页下一页下一节图2.2(b)行波进位的补码加法减法器动态演示
46、四、基本的二进制加法四、基本的二进制加法/减法器减法器返回退出上一页下一页下一节2、工作过程:1)M为方式控制信号 图2.2(b)中M连着起始进位C0,同时又作为异或门的一个输入信号,从而控制加法器是做加法运算还是减法运算。当M0时,BM=B0=B,做加法(AB)运算;当M1时,BM=B1=B且C0=M=1,做A+B+1=A补B补补=A补B补=A补B补,即减法运算。2)CnCn1 溢出判断信号 Cn1为最高有效位的进位,Cn为符号位进位,两位异或即为单符号位法的溢出判断逻辑。四、基本的二进制加法四、基本的二进制加法/减法器减法器返回退出上一页下一页下一节3、全加器FA介绍:1)硬件结构:FA全
47、加器结构是一个逻辑门电路组成 SiAiBiCi Ci1AiBiBiCiCiAi Si是两个1位二进制数与低位进位相加所得之和;Ci1是得到和Si的一个进位输出。图2.2(a)四、基本的二进制加法四、基本的二进制加法/减法器减法器返回退出上一页下一页下一节2)硬件设计过程 把两个二进制数字Ai,Bi和一个进位输入Ci相加的过程写成 真值表,如表2.2;由真值表写成逻辑表达式:SiAiBiCi Ci1AiBiBiCiCiAi (2.23)(2.23)Ci+1的变换 推导过程推导过程四、基本的二进制加法四、基本的二进制加法/减法器减法器返回Ci+1=AiBiCi+AiBiCi+AiBiCi+AiBi
48、Ci =(AiBi)Ci+AiBi =(AiBi)Ci+AiBi =(AiBi)Ci.AiBiCi+1=(AiBi)Ci.AiBi,故得到图2.2(a)。四、基本的二进制加法四、基本的二进制加法/减法器减法器表表2.2 一位全加器真值表一位全加器真值表 返回返回Si=AiBiCi+AiBiCi+AiBiCi+AiBiCi=Ai(BiCi+BiCi)+Ai(BiCi+BiCi)=Ai(BiCi)+Ai(BiCi.BiCi)=Ai(BiCi)+Ai(Bi+Ci).(Bi+Ci)=Ai(BiCi)+Ai(BiCi+BiCi)=Ai(BiCi)+Ai(BiCi)=AiBiCi返回Ci+1=AiBiCi
49、+AiBiCi+AiBiCi+AiBiCi =AiBiCi+AiBiCi+AiBiCi+AiBiCi+AiBiCi+AiBiCi =BiCi+AiCi+AiBi五、十进制加法器五、十进制加法器1、n位BCD码行波式进位加法器的一般结构:由n个一位BCD码加法单元经进位位相连而成。2、一位十进制数字的BCD加法器单元的逻辑结构:一位BCD加法器单元=4位二进制加法器+修正逻辑电路+第二级加法器返回退出上一页下一页下一节图2.3五、十进制加法器五、十进制加法器设i和i是普通4位二进制数,Si代表得到的4位二进制数和,Ci1为输出进位,而Si代表正确的BCD和,Ci1代表正确的进位,则:当iiCi9
50、时,产生进位,但在BCD码运算中,两数之和15时,才产生进位。必须对BCD码形式的十进制数加6修正,帮助其产生 进位,才能产生正确的BCD码形式的十进制数。或16有进位用多一个6,则个位+6修正。继续返回 当Si|x|,使商|q|1,否则溢出。手动算法返回退出上一页下一页上一节下一节一、原码除法运算原理一、原码除法运算原理在计算机中,小数点是固定的,不能简单地采用手算的办法。为便于机器操作,使“除数右移”和“右移上商”的操作统一起来。事实上,机器算法与手动算法不同,人会心算,一看就知道,够不够减。但机器却不会心算,必须先做减法,若余数为正,才知道够减;若余数为负,才知道不够减。恢复余数法:恢复