第1章数据在计算机中的表示与运算方法优秀课件.ppt
-
资源ID:72168114
资源大小:4.81MB
全文页数:75页
- 资源格式: PPT
下载积分:18金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
第1章数据在计算机中的表示与运算方法优秀课件.ppt
第1章 数据在计算机中的表示与运算方法第1页,本讲稿共75页 本章主要内容本章主要内容n计算机中几种常用进位计数制及不同进位制数之间的转换计算机中几种常用进位计数制及不同进位制数之间的转换方法;方法;n数据在计算机中的表示与运算方法。数据在计算机中的表示与运算方法。第2页,本讲稿共75页1.1 进位计数制进位计数制n计算机中全部信息(包括指令和数据)都是采用二进制数,为了书写计算机中全部信息(包括指令和数据)都是采用二进制数,为了书写方便,又经常采用十六进制。人们在日常生活中又广泛采用十进制。方便,又经常采用十六进制。人们在日常生活中又广泛采用十进制。n二进制、十六进制、十进制都是进位计数制。二进制、十六进制、十进制都是进位计数制。第3页,本讲稿共75页1.1.1 进位计数制及其基数和权进位计数制及其基数和权n进位计数制:用一组固定的数字符号和特定的规则表示数进位计数制:用一组固定的数字符号和特定的规则表示数的方法。的方法。l基数和权基数和权l在进位计数制中,一种进位制所允许选用的基本数字符号的个在进位计数制中,一种进位制所允许选用的基本数字符号的个数称为这种进位制的数称为这种进位制的基数基数。l同一个数字符号处在不同的数位时,它所代表的数值同一个数字符号处在不同的数位时,它所代表的数值是不同的,每个数字符号所代表的数值等于它本身乘是不同的,每个数字符号所代表的数值等于它本身乘以一个与它所在数位对应的常数,这个常数叫做位权,以一个与它所在数位对应的常数,这个常数叫做位权,简称简称权权(weight)。)。第4页,本讲稿共75页n不同进位制的基数不同不同进位制的基数不同 十进制:基数十进制:基数10,数字符号,数字符号09 二进制:基数二进制:基数2,数值符号,数值符号0,1n同一进制,不同数位其权值不同。同一进制,不同数位其权值不同。第5页,本讲稿共75页1.1.2 常用的进位计数制常用的进位计数制十进制十进制n任何一个十进制数,都可以用一个多项式来表示:任何一个十进制数,都可以用一个多项式来表示:n等式右边的表示形式,称为十进制数的等式右边的表示形式,称为十进制数的多项式表示法,也叫按权多项式表示法,也叫按权展开式展开式;n等号左边的形式,称为十进制的位置记数法。位置记数等号左边的形式,称为十进制的位置记数法。位置记数法是一种与位置有关的表示方法,同一个数字符号处于法是一种与位置有关的表示方法,同一个数字符号处于不同的数位时,所代表的数值不同,即其权值不同。不同的数位时,所代表的数值不同,即其权值不同。第6页,本讲稿共75页二进制二进制n二进制数的基数为二进制数的基数为2,即它所用的数字符号个数只有两个(,即它所用的数字符号个数只有两个(“0”和和“1”)。它的计数进位规则为)。它的计数进位规则为“逢二进一逢二进一”。n二进制数只有两种数字符号,因而便于数字系统与电二进制数只有两种数字符号,因而便于数字系统与电子计算机内部的表示与存储。它的另一个优点是运算规子计算机内部的表示与存储。它的另一个优点是运算规则的简便性,而运算规则的简单,必然导致运算电路的则的简便性,而运算规则的简单,必然导致运算电路的简单以及相关控制的简化简单以及相关控制的简化。第7页,本讲稿共75页n八进制八进制 八进制数的基数八进制数的基数R8,每位可能取八个不同的数字符号,每位可能取八个不同的数字符号07中中的任何一个,进位规则是的任何一个,进位规则是“逢八进一逢八进一”。l1位八进制对应位八进制对应3位二进制位二进制l八进制:八进制:0,1,2,3,4,5,6,7l二进制:二进制:000,001,010,011,100,101,110,111第8页,本讲稿共75页十六进制十六进制n十六进制数的基数十六进制数的基数R16,每位用十六个数字符号,每位用十六个数字符号0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F中的一个表示,中的一个表示,进位规则是进位规则是“逢十六进一逢十六进一”。n与二进制转换时候,其每位对应与二进制转换时候,其每位对应4位二进制数。位二进制数。n在编程时,为了书写方便,常用十六进制表示。在编程时,为了书写方便,常用十六进制表示。第9页,本讲稿共75页1.2 1.2 不同进位制数之间的转换不同进位制数之间的转换1.2.1 二进制数转换为十进制数二进制数转换为十进制数u按权展开,例如按权展开,例如(101011.101)2(252321202-12-3)10 (328210.50.125)10 (43.625)10n同样的方法也可将八进制数转换为十进制数。同样的方法也可将八进制数转换为十进制数。n这种用以实现数制转换的方法,称为多项式替代法。这种用以实现数制转换的方法,称为多项式替代法。第10页,本讲稿共75页1.2.2 十进制数转换为二进制数(整数部分)十进制数转换为二进制数(整数部分)n十进制数转换为二进制数:除十进制数转换为二进制数:除2取余,例如十进制数取余,例如十进制数29的转换。的转换。2 921 4余数1 (B0)72232120余数0 (B1)余数1 (B2)余数1 (B3)余数1 (B4)29D=11101B 第11页,本讲稿共75页n采用采用“除除8取余取余”或或“除除16取余取余”的方法,即可将一个十进制整的方法,即可将一个十进制整数转换为八进制整数或十六进制整数。数转换为八进制整数或十六进制整数。n这种数制转换的方法称为基数除法或这种数制转换的方法称为基数除法或“除基取余除基取余”法。法。可概括可概括为:为:“除基取余,直至商为除基取余,直至商为0,注意确定高、低位,注意确定高、低位”。第12页,本讲稿共75页1.2.2 十进制数转换为二进制数(小数部分)十进制数转换为二进制数(小数部分)n十进制小数转换为二进制小数十进制小数转换为二进制小数:乘乘2取整取整例例 把0.625转换成二进制数 把0.625乘2取整0.625 21.250b-1=1 0.25 2 0.50b-2=00.5 2 1.0b-3=1 0.625=0.101B第13页,本讲稿共75页n在十进制小数转换成二进制小数时,整个计算过程可能无限地进行在十进制小数转换成二进制小数时,整个计算过程可能无限地进行下去,这时,一般考虑到计算机实际字长的限制,只取有限位数的下去,这时,一般考虑到计算机实际字长的限制,只取有限位数的近似值就可以了。近似值就可以了。n上述这种数制转换方法称为基数乘法或上述这种数制转换方法称为基数乘法或“乘基取整乘基取整”法。法。可概括可概括如下:如下:“乘基取整,注意确定高、低位及有效位数。乘基取整,注意确定高、低位及有效位数。”u如果一个数既有整数部分又有小数部分,则用前述的如果一个数既有整数部分又有小数部分,则用前述的“除基取余除基取余”及及“乘基取整乘基取整”结合求解。结合求解。第14页,本讲稿共75页1.2.3 任意两种进位制数之间的转换任意两种进位制数之间的转换 n为实现任意两种进位制数之间的转换(例如从为实现任意两种进位制数之间的转换(例如从P进制转换成进制转换成R进制),可以用进制),可以用“基数乘除法基数乘除法”或或“多项式替代法多项式替代法”直接直接从从P进制转换成进制转换成R进制,此时如果熟悉进制,此时如果熟悉P进制的运算规则就可进制的运算规则就可以采用以采用“基数乘除法基数乘除法”;如果熟悉;如果熟悉R进制的运算规则就采用进制的运算规则就采用“多多项式替代法项式替代法”。n有时可能对有时可能对P进制与进制与R进制的运算规则都不熟悉,那么一种进制的运算规则都不熟悉,那么一种方便的方法就是利用十进制作桥梁。方便的方法就是利用十进制作桥梁。n首先将其转换为十进制,这里采用首先将其转换为十进制,这里采用“多项式替代法多项式替代法”,然后将转,然后将转换为所需目标进制,这里采用换为所需目标进制,这里采用“基数乘除法基数乘除法”。第15页,本讲稿共75页1.3 二进制的算术运算与逻辑运算二进制的算术运算与逻辑运算n加法运算规则:逢二进一加法运算规则:逢二进一n减法运算规则:借一当二减法运算规则:借一当二n乘法运算规则:乘法运算规则:000,010,100,111 例如:例如:1101x1010=1101110二进制的乘法可以归结为:二进制的乘法可以归结为:“加加”与与“移位移位”n除法运算:乘法的逆运算除法运算:乘法的逆运算 以二进制的乘法及减法规则实现以二进制的乘法及减法规则实现第16页,本讲稿共75页n逻辑运算:逻辑运算:或(逻辑加)、与(逻辑乘)、非(逻辑反)、异或(模或(逻辑加)、与(逻辑乘)、非(逻辑反)、异或(模2加)加)n移位运算移位运算 逻辑左移:逻辑左移:将操作数的所有位同时左移,最高位移出原操作将操作数的所有位同时左移,最高位移出原操作数之外,最低位补数之外,最低位补0。逻辑左移一位相当于无符号数乘。逻辑左移一位相当于无符号数乘2。例例如,将如,将01100101逻辑左移一位后变成逻辑左移一位后变成11001010,相当于,相当于(101)102202。逻辑右移:逻辑右移:将操作数的所有位同时右移,最低位移出原操作数将操作数的所有位同时右移,最低位移出原操作数之外,最高位补之外,最高位补0。逻辑右移一位相当于将无符号数除以。逻辑右移一位相当于将无符号数除以2。例。例如,将如,将10010100逻辑右移一位后变成逻辑右移一位后变成01001010,相当于,相当于148274。第17页,本讲稿共75页n循循环环左左移移:将将操操作作数数的的所所有有位位同同时时左左移移,并并将将移移出出的的最最高高位位送送到到最最低低位位。循循环环左左移移的的结结果果不不会会丢丢失失被被移移动动的的数数据据位。例如,将位。例如,将10010100循环左移一位后变成循环左移一位后变成00101001。n循循环环右右移移:将将操操作作数数的的所所有有位位同同时时右右移移,并并将将移移出出的的最最低低位位送送到到最最高高位位。它它也也不不会会丢丢失失被被移移动动的的数数据据位位。例例如如,将将10010100循环右移一位后变成循环右移一位后变成01001010。第18页,本讲稿共75页n算术移位算术移位 算术移位是把操作数当作带符号数进行移位,所以在算术移位是把操作数当作带符号数进行移位,所以在算术移位中,必须保持符号位不变。否则将发生溢出。算术移位中,必须保持符号位不变。否则将发生溢出。与逻辑移位类似,算术移位可分为算术左移、算术右与逻辑移位类似,算术移位可分为算术左移、算术右移、循环左移和循环右移。循环左移和循环右移的操作移、循环左移和循环右移。循环左移和循环右移的操作与前述逻辑移位时的情况相同,都是不丢失移出原操作与前述逻辑移位时的情况相同,都是不丢失移出原操作数的位,而将其返回到操作数的另一端。数的位,而将其返回到操作数的另一端。第19页,本讲稿共75页1.4 数据在计算机中的表示形式数据在计算机中的表示形式n存储原理存储原理 电子计算机实质上是一个二进制的数字系统,在机器电子计算机实质上是一个二进制的数字系统,在机器内部,二进制数总是存放在由具有两种相反状态的存储内部,二进制数总是存放在由具有两种相反状态的存储元件构成的寄存器或存储单元中,即二进制数码元件构成的寄存器或存储单元中,即二进制数码0和和1是是由存储元件的两种相反状态来表示的。由存储元件的两种相反状态来表示的。另外,对于数的符号(正号另外,对于数的符号(正号“”和负号和负号“”)也只能)也只能用这两种相反的状态来区别。也就是说,只能用用这两种相反的状态来区别。也就是说,只能用0或或1来来表示。表示。第20页,本讲稿共75页1.4.1 机器数与真值机器数与真值n机器数与真值机器数与真值一个数(连同符号)在机器中加以数码化后的表示形式,称一个数(连同符号)在机器中加以数码化后的表示形式,称为为机器数机器数,而把原来的数称为机器数的,而把原来的数称为机器数的真值。真值。第21页,本讲稿共75页1.4.2 几种常见的机器数形式几种常见的机器数形式n机器数形式机器数形式n原码:原码:数码序列中的最高位为符号位,符号位为数码序列中的最高位为符号位,符号位为0表示该表示该数为正数,为数为正数,为1表示该数为负数;其余有效数值部分则表示该数为负数;其余有效数值部分则用二进制的绝对值表示。用二进制的绝对值表示。例如:例如:真值x x原 0.1001 0.1001 0.1001 1.1001 1001 01001 1001 11001第22页,本讲稿共75页n0 的原码有两种表示,的原码有两种表示,以定点小数为例以定点小数为例 +0原原=0.000 0000 0原原=1.000 0000 原码表示简单直观,但运算时符号位与数值位要区别原码表示简单直观,但运算时符号位与数值位要区别对待,在原码表示中,符号位不是数值的一部分,它们对待,在原码表示中,符号位不是数值的一部分,它们仅是人为约定(仅是人为约定(“0为正,为正,1为负为负”),所以符号位在运算过程),所以符号位在运算过程中需要单独处理,不能当作数值的一部分直接参与运算。中需要单独处理,不能当作数值的一部分直接参与运算。第23页,本讲稿共75页n补码补码定点小数补码定义如下:定点小数补码定义如下:若定点小数的补码序列为若定点小数的补码序列为X0.X1Xn,则,则式中,式中,x 代表真值,代表真值,为补码表示的机器数。为补码表示的机器数。若定点整数的补码序列为若定点整数的补码序列为 ,则,则第24页,本讲稿共75页u正数的补码是其自身;正数的补码是其自身;u0的补码只有一种表示;的补码只有一种表示;u负数的补码是用模数加上该负数。从原码转换为补码的变负数的补码是用模数加上该负数。从原码转换为补码的变化规律为:化规律为:“符号位保持不变(仍为符号位保持不变(仍为1),其他各位求反,),其他各位求反,然后末位加然后末位加1”,简称,简称“求反加求反加1”。例如:例如:x0.1010,则,则x原原0.1010,x补补0.1010 x0.1010,则,则x原原1.1010,x补补1.0110 容易看出,当容易看出,当x0时,若把时,若把x补补除符号位外除符号位外“求反加求反加1”,即可得,即可得到到x原原。也就是说,对一个补码表示的数,再次求补,可得该。也就是说,对一个补码表示的数,再次求补,可得该数的原码。数的原码。第25页,本讲稿共75页n反码反码定点小数反码定义如下:定点小数反码定义如下:若定点小数的反码序列为若定点小数的反码序列为X0.X1Xn ,则则式中,式中,x代表真值,代表真值,x反反为补码表示的机器数。为补码表示的机器数。若定点整数的补码序列为若定点整数的补码序列为 ,则,则第26页,本讲稿共75页u正数的反码是其本身,负数的反码是其对应正数求反,正数的反码是其本身,负数的反码是其对应正数求反,0的反码有两的反码有两种表示,分别为全种表示,分别为全0或者全或者全1。u反码运算规则:反码运算规则:X+Y反反=X反反+Y反反+循环进位循环进位 XY反反=X反反+Y反反+循环进位循环进位如上所述,由原码表示容易得到相应的反码表示。例如:如上所述,由原码表示容易得到相应的反码表示。例如:x0.1001,x原原0.1001,x反反0.1001x0.1001,x原原1.1001,x反反1.0110第27页,本讲稿共75页n原码、反码、补码之间的转换原码、反码、补码之间的转换 转换规则如下图所示:转换规则如下图所示:第28页,本讲稿共75页n移码表示法移码表示法设定点整数移码形式为设定点整数移码形式为 ,则,则 其中其中 式中式中x为真值,为真值,x移移为其移码。为其移码。n把真值把真值x在数轴上向正方向平移在数轴上向正方向平移 单位,移码由此得名。又单位,移码由此得名。又叫增码。叫增码。第29页,本讲稿共75页u移码特点:移码特点:1)移码是把真值映射到一个正数域(表中为)移码是把真值映射到一个正数域(表中为0255),因),因此移码的大小可以直观地反映真值的大小。无论是正数还此移码的大小可以直观地反映真值的大小。无论是正数还是负数,用移码表示后,可以按无符号数比较大小。是负数,用移码表示后,可以按无符号数比较大小。第30页,本讲稿共75页 2)移码的数值部分与相应的补码各位相同,而符号位)移码的数值部分与相应的补码各位相同,而符号位与补码相反。在移码中符号位为与补码相反。在移码中符号位为0表示真值为负数,符号表示真值为负数,符号位为位为1表示真值为正数。表示真值为正数。3)移码为全)移码为全0时,它对应的真值最小。时,它对应的真值最小。4)真值)真值0在移码中的表示是唯一的,即:在移码中的表示是唯一的,即:第31页,本讲稿共75页1.4.3 数的定点表示与浮点表示n定点表示法定点表示法n定点小数、定点整数定点小数、定点整数n浮点表示法浮点表示法u编码格式编码格式:通常由尾数和阶码组成;其中尾数表示有效通常由尾数和阶码组成;其中尾数表示有效数字,阶码表示小数点位置。表示如下:数字,阶码表示小数点位置。表示如下:其中其中M是尾数,是尾数,R是基数(常取是基数(常取2),),E是阶码,是阶码,S是符号位。是符号位。在计算机中表示形式为:在计算机中表示形式为:其中其中S是符号位,是符号位,E是阶码,是阶码,M是尾数。是尾数。SEM第32页,本讲稿共75页u浮点数的规格化:浮点数的规格化:不丢失数字,提高运算精度。不丢失数字,提高运算精度。1)如果阶码以)如果阶码以2为底,则规格化浮点数的尾数为底,则规格化浮点数的尾数M的绝对的绝对值应满足:值应满足:2)对于原码,)对于原码,M1=1;3)对于补码,正数时,)对于补码,正数时,M1=1,负数时,负数时M1=0;“尾数最高尾数最高位与符号位相反位与符号位相反”即为判断浮点数是否为规格化数的标志。即为判断浮点数是否为规格化数的标志。第33页,本讲稿共75页例例 将浮点数将浮点数 转换为规格化表示。转换为规格化表示。解析:该数据为负数,符号为为解析:该数据为负数,符号为为1,尾数的补码为,尾数的补码为1.1101,由规,由规格化步骤,将尾数左移格化步骤,将尾数左移2位,阶码减位,阶码减2,从而使小数点后第一,从而使小数点后第一位为位为0,规格化后为:,规格化后为:第34页,本讲稿共75页nIEEE 754标准:标准:对浮点数的编码格式的标准化,以便于实现不浮点数的编码格式的标准化,以便于实现不同计算机之间的软件移植。同计算机之间的软件移植。其中的浮点编码有其中的浮点编码有32位、位、64位和位和80位三种格式,分别称为短实数位三种格式,分别称为短实数(Short real)、长实数()、长实数(Long real)和临时实数()和临时实数(Temporary real)。)。短实数:短实数:其中:其中:S为符号为,为符号为,E为阶码,为阶码,M是尾数。是尾数。313023220SE7E0M1M23第35页,本讲稿共75页n在在IEEE754浮点数格式中,符号位浮点数格式中,符号位S仍然用仍然用0表示正数,表示正数,1表示负数。对于表示负数。对于32位格式,阶码为位格式,阶码为8位,正常数的阶码位,正常数的阶码E的取的取值范围为值范围为1254,偏移值为,偏移值为127;尾数;尾数M可以取任意的可以取任意的23位位二进制数值,加上隐含的二进制数值,加上隐含的M0(1)位,可达到)位,可达到24位的运位的运算精度。算精度。n阶码阶码E是一个带偏移的无符号整数,从中减去相应的偏移值是一个带偏移的无符号整数,从中减去相应的偏移值即为浮点数的实际阶码值。即为浮点数的实际阶码值。第36页,本讲稿共75页例例 试试给出十进制数给出十进制数-0.625的的IEEE754单精度数标准代码。单精度数标准代码。解解 先将先将0.625转换为二进制形式为转换为二进制形式为-0.101,相应的浮点数表示,相应的浮点数表示形式为形式为 ,再转换为,再转换为IEEE 754标准的规格化形式为:标准的规格化形式为:。再由。再由IEEE754单精度数值公式转换,可得到单精度数值公式转换,可得到 E=126=01111110,所以,所以-0.625的的IEEE754单精度标准代码单精度标准代码为:为:S=1;E=01111110,M1M23=01000000000000000000000第37页,本讲稿共75页例例 试给出如下试给出如下IEEE 754单精度标准代码的十进制数表单精度标准代码的十进制数表示示 S=0,E=10000011,M1M23=10000000000000000000000;解解 S=0,E=10000011B=131D,规格化的尾数为,规格化的尾数为1.1B;由;由IEEE 754单精度标准的数值公式,可得所求十进制为:单精度标准的数值公式,可得所求十进制为:第38页,本讲稿共75页1.5 数据在计算机中的运算方法数据在计算机中的运算方法第39页,本讲稿共75页1.5.1 定点数加减法运算定点数加减法运算1)补码加法运算)补码加法运算两数的两数的补码补码直接直接执执行加法运算,符号位与数行加法运算,符号位与数值值位一起参加运算。位一起参加运算。例:例:在模在模2的意义下,将多出的的意义下,将多出的2丢失(即丢失(即10.1010000.101000),),得到得到第40页,本讲稿共75页 补码加法运算的主要特点如下:补码加法运算的主要特点如下:参与运算的数均用补码表示;参与运算的数均用补码表示;符号数当作数的一部分参加运算;符号数当作数的一部分参加运算;在模在模2的意义下相加,多出的的意义下相加,多出的2可以去掉;可以去掉;运算结果为补码表示。如符号位为运算结果为补码表示。如符号位为0,表明运算结果为正数;,表明运算结果为正数;如符号位为如符号位为1,表明运算结果为负数。,表明运算结果为负数。第41页,本讲稿共75页2)补码减法运算)补码减法运算 把减法运算转化为加法运算,即把减去一个正数看成加把减法运算转化为加法运算,即把减去一个正数看成加上一个负数,并把该负数用补码表示,然后一律按加法上一个负数,并把该负数用补码表示,然后一律按加法规则进行计算。规则进行计算。第42页,本讲稿共75页3)加减法运算的硬件实现)加减法运算的硬件实现 为理解计算机中的基本算术运算部件,下面给出前述理解计算机中的基本算术运算部件,下面给出前述加、减法运算的硬件实现框图。加、减法运算的硬件实现框图。第43页,本讲稿共75页 其中求补器将寄存器其中求补器将寄存器B中的二进制数中的二进制数“连同符号位每位连同符号位每位求反,末位加求反,末位加1”后送出,然后经开关后送出,然后经开关SW与寄存器与寄存器A中的中的被减数相加,从而实现被减数相加,从而实现“化减为加化减为加”的目的。的目的。开关开关SW实现加法或减法的选择。实现加法或减法的选择。OF=溢出标志,溢出标志,SW=开关。开关。第44页,本讲稿共75页4)溢出判断)溢出判断 溢出:溢出:运算结果超出计算装置所能表示的数值范围运算结果超出计算装置所能表示的数值范围。溢出停机:溢出停机:发生溢出时,计算机必须能够立即发现,并停止运发生溢出时,计算机必须能够立即发现,并停止运算,或做相应错误处理。算,或做相应错误处理。第45页,本讲稿共75页根据参加运算的两个数的符号及运算结果的符号判断溢根据参加运算的两个数的符号及运算结果的符号判断溢出;溢出函数出;溢出函数 这是从符号位之间的关联出发,判断溢出,当两个正数这是从符号位之间的关联出发,判断溢出,当两个正数相加,结果为负,或者两个负数相加结果为正时,产生相加,结果为负,或者两个负数相加结果为正时,产生溢出。溢出。根据两种进位位的状态判断溢出根据两种进位位的状态判断溢出;溢出函数为:;溢出函数为:式中式中CS为符号位产生的进位,为符号位产生的进位,C1为最高有效位产生的进为最高有效位产生的进位。位。第46页,本讲稿共75页1.5.2 定点数乘法运算定点数乘法运算下图为无符号数二进制整数乘法的基本步骤,与手动演算步骤一样。下图为无符号数二进制整数乘法的基本步骤,与手动演算步骤一样。1 0 1 0 被乘数(10)1 1 0 1 乘数 (13)1 0 1 0 0 0 0 0 部分积 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 乘积(130)第47页,本讲稿共75页u与手动演算相比,计算机中的乘法操作更加有效。与手动演算相比,计算机中的乘法操作更加有效。计算机中可以边产生部分积边做加法,而不是等到最后计算机中可以边产生部分积边做加法,而不是等到最后再将所有部分积相加;再将所有部分积相加;由于乘数的每个由于乘数的每个1,需要,需要“相加相加”和和“移位移位”两个操作,两个操作,而对于乘数的每一个而对于乘数的每一个0,则只需要移位操作,所以可以节省,则只需要移位操作,所以可以节省某些部分积的生成时间。某些部分积的生成时间。第48页,本讲稿共75页n补码乘法补码乘法被乘数、乘数、积都用补码表示,连同符号位一道运被乘数、乘数、积都用补码表示,连同符号位一道运算。若算。若X、Y为带符号数,则补码乘法具有如下特性为带符号数,则补码乘法具有如下特性:XY补补X补补Y补补 (积的补码等于补码的积)(积的补码等于补码的积)第49页,本讲稿共75页一种比较好的补码乘法:一种比较好的补码乘法:布斯(布斯(Booth)算法)算法采用相加和相减的操作计算补码数据的乘积。采用相加和相减的操作计算补码数据的乘积。Booth算法对乘数算法对乘数从低位开始判断,根据两个数据位的情况决定进行加被乘数、减从低位开始判断,根据两个数据位的情况决定进行加被乘数、减被乘数还是仅仅做移位操作。被乘数还是仅仅做移位操作。判断的两个数据位是乘数当前的最低位及其右边的位(初始时判断的两个数据位是乘数当前的最低位及其右边的位(初始时需添加一个辅助位需添加一个辅助位0),移位操作是算术右移。),移位操作是算术右移。第50页,本讲稿共75页1.5.2 定点数除法运算定点数除法运算n无符号整数除法无符号整数除法常见的方法有常见的方法有“恢复余数法恢复余数法”和和“加减交替法加减交替法”。恢复余数法:恢复余数法:要恢复余数,造成除法进行过程的步数要恢复余数,造成除法进行过程的步数不固定,控制较复杂,运算速度较慢不固定,控制较复杂,运算速度较慢。加减交替法:加减交替法:当运算过程中出现不够减时,不必通过当运算过程中出现不够减时,不必通过加法来恢复余数,根据余数的符号,可继续往下运算加法来恢复余数,根据余数的符号,可继续往下运算。无符号整数除法的无符号整数除法的“加减交替法加减交替法”流程图如下所示:流程图如下所示:第51页,本讲稿共75页第52页,本讲稿共75页上图中上图中A、Q是两个是两个n位的移位寄存器,用来存放部分余数。位的移位寄存器,用来存放部分余数。开始时,被除数(可以有开始时,被除数(可以有2n位长度)放在这两个寄存器中。除位长度)放在这两个寄存器中。除数放在数放在M寄存器,它保存到除法结束。寄存器,它保存到除法结束。每步每步A、Q向左移向左移1位。位。Q寄存器的最右端空单元用来存放每寄存器的最右端空单元用来存放每步产生的商。当除法过程结束时,步产生的商。当除法过程结束时,Q包含了商而包含了商而A包含了(已包含了(已移位的)余数。移位的)余数。第53页,本讲稿共75页例例 用无符号整数加减交替除法计算用无符号整数加减交替除法计算7/23余余1 解解 运算开始时,运算开始时,A、Q中存放被除数中存放被除数00000111,M中存放除数中存放除数0010。用加减交替除法进行的运算过程如下所示:。用加减交替除法进行的运算过程如下所示:M(除数)AQ001000000111初始值AAM11100111A、Q左移1位,商011001110循环1AAM11101110A、Q左移1位,商011011100循环2AAM11111100A、Q左移1位,商011111000循环3AAM00011000A、Q左移1位,商100110001循环4AAM0001000100010011最后一步余数为正数,Q左移一位,上商1,结束。商为0011,存于Q中,余数为0001,存于A中。第54页,本讲稿共75页n补码除法补码除法 被除数、除数、商和余数均用补码表示,连同符号位一道被除数、除数、商和余数均用补码表示,连同符号位一道运算。运算。设设X、Y为带符号数,则补码除法具有如下特性:为带符号数,则补码除法具有如下特性:XY补补X补补Y补补(商的补码等于补码的商)(商的补码等于补码的商)这里主要介绍加减交替补码除法:商和余数经过一步一步运算得这里主要介绍加减交替补码除法:商和余数经过一步一步运算得到。其中每一步运算会得到商的一位和一个部分余数,经过多步到。其中每一步运算会得到商的一位和一个部分余数,经过多步运算才能得到最后的商和最后的余数。运算才能得到最后的商和最后的余数。其流程图如下:其流程图如下:第55页,本讲稿共75页第56页,本讲稿共75页上图中:上图中:把除数(补码)放入寄存器把除数(补码)放入寄存器M,把被除数从,把被除数从n位扩展成位扩展成2n位的补码后放入寄存器位的补码后放入寄存器A和和Q中,中,A中为高位部分(全中为高位部分(全0或全或全1),),Q中为低位部分;中为低位部分;把寄存器把寄存器A和和Q左移左移1位;位;如果如果A和和M同号,则执行同号,则执行AAM;否则,执行;否则,执行AAM;第57页,本讲稿共75页 若若A在操作之后符号未改变或在操作之后符号未改变或A0,则操作成功,令,则操作成功,令Q01;否则,操作不成功,恢复否则,操作不成功,恢复A原来的内容,并令原来的内容,并令Q00;重复上述步骤重复上述步骤共共n次;次;若被除数与除数同号,则商在若被除数与除数同号,则商在Q中,余数在中,余数在A中,结束;若被除中,结束;若被除数与除数异号,则需将数与除数异号,则需将Q中的值取中的值取“相反数相反数”才是正确的商。才是正确的商。第58页,本讲稿共75页例例 用图用图 1.10的补码除法流程计算的补码除法流程计算 (14)(3)(4)余(2)。解解 设设n4,14补补0000 1110,3补补1101,4补补1100,2补补0010,则原式的二进制机器数(补码)表示,则原式的二进制机器数(补码)表示形式为:形式为:0000 111011011100余余0010。设设A、Q是两个是两个4位的移位寄存器,运算开始时,位的移位寄存器,运算开始时,A、Q中存放被除中存放被除数数0000 1110,除数,除数1101存放于存放于M寄存器中。寄存器中。第59页,本讲稿共75页1.5.4 浮点数的四则运算n在计算机中,浮点数由阶码和尾数两部分组成。在计算机中,浮点数由阶码和尾数两部分组成。规格化浮点数的阶码通常是带符号整数,其尾数是带符号小数,规格化浮点数的阶码通常是带符号整数,其尾数是带符号小数,因此,规格化浮点数的运算可归结为定点整数的运算和定点小数因此,规格化浮点数的运算可归结为定点整数的运算和定点小数的运算。的运算。对非规格化的浮点数,先进行规格化,然后按照规格化小数运对非规格化的浮点数,先进行规格化,然后按照规格化小数运算规则运算。算规则运算。1.浮点数加减法浮点数加减法 分为对阶、尾数加减运算、规格化、舍入和判断结果分为对阶、尾数加减运算、规格化、舍入和判断结果是否溢出五个步骤。是否溢出五个步骤。第60页,本讲稿共75页(1)对阶对阶 对阶就是使参与运算的两个浮点数的阶码相等。对阶就是使参与运算的两个浮点数的阶码相等。对阶的方法是:将阶码小的数的尾数右移,同时增加其阶码,使对阶的方法是:将阶码小的数的尾数右移,同时增加其阶码,使小的阶码与大的阶码相同,并保持原浮点数的值不变。由于在对小的阶码与大的阶码相同,并保持原浮点数的值不变。由于在对阶时会将尾数的最低位移出,所以浮点数的精度可能会下降。阶时会将尾数的最低位移出,所以浮点数的精度可能会下降。另外,在对阶时还必须检查阶码是否溢出。另外,在对阶时还必须检查阶码是否溢出。(2)尾数运算尾数运算第61页,本讲稿共75页(3)规格化规格化 如果加减运算后得到的尾数不符合规格化的要求,就需要进行如果加减运算后得到的尾数不符合规格化的要求,就需要进行规格化处理。规格化分为左归和右规。在规格化时也必须检查规格化处理。规格化分为左归和右规。在规格化时也必须检查阶码是否溢出。阶码是否溢出。(4)舍入舍入 常用的舍入方法是常用的舍入方法是“0舍舍1入法入法”。(5)判断结果是否溢出判断结果是否溢出第62页,本讲稿共75页例例 按浮点数加法基本步骤完成(按浮点数加法基本步骤完成(0.5)()(0.125)的二进制数)的二进制数运算。假定尾数为运算。假定尾数为4位。位。解解 本题没有规定浮点数的编码格式,现直接采用数值运算来本题没有规定浮点数的编码格式,现直接采用数值运算来表示浮点数的运算步骤。表示浮点数的运算步骤。0.5=1/2=0.100020 0.125=1/8=0.0010=0.10002-2 对阶。对阶。将阶码较小的数的尾数右移将阶码较小的数的尾数右移2位,阶码加位,阶码加2,得,得0.10002-2 =0.001020 第63页,本讲稿共75页 尾数相加。尾数相加。(0.1000 20)(0.0010 20)=0.0110 20 规格化规格化。将运算结果。将运算结果0.0110 20的尾数左移的尾数左移1位,阶码减位,阶码减1,得,得0.0110 20=0.1100 2-1 舍入。舍入。运算结果未超出运算结果未超出4位存储,不需进行舍入操作。位存储,不需进行舍入操作。判断是否溢出。判断是否溢出。数据无溢出,最后结果为:数据无溢出,最后结果为:0.1100 2-1=0.0110=3/8=0.375第64页,本讲稿共75页例例 按浮点数减法基本步骤完成按浮点数减法基本步骤完成(2.5)(1.125)的二进制数的二进制数运算。假设尾数为运算。假设尾数为4位,阶码为位,阶码为3位,均采用原码表示。运位,均采用原码表示。运算时设置两个保护位,舍入时采用算时设置两个保护位,舍入时采用“0舍舍1入法入法”。符号位。符号位占占1位,用、表示,(机器中用位,用、表示,(机器中用0、1表示)。表示)。解解 先规格化先规格化(阶码和尾数用二进制表示阶码和尾数用二进制表示)。2.5=10.1 2+00=.101000 2+10(尾数右边的(尾数右边的00为增设的两为增设的两位保护位)位保护位)1.125=1.001 2+00=.100100 2+01(尾数右边的(尾数右边的00为增为增设的两位保护位)设的两位保护位)对阶对阶。将阶码较小的数(。将阶码较小的数(.100100 2+01)的尾数右移)的尾数右移1位,位,阶码加阶码加1,得,得.100100 2+01=.010010 2+10第65页,本讲稿共75页尾数相减。尾数相减。(.101000 2+10)(.010010)2+10)=.111010 2+10规格化。规格化。结果已是规格化形式。结果已是规格化形式。舍入。舍入。按题目要求采用按题目要求采用“0舍舍1入法入法”。.111010 2+10=.1111 2+10判断是否溢出。判断是否溢出。在运算过程中阶码始终没超过限定的位数在运算过程中阶码始终没超过限定的位数3位,所以没有溢出。位,所以没有溢出。最后的十进制结果是:最后的十进制结果是:(2.5)(1.125)=3.75,有舍入误差。,有舍入误差。第66页,本讲稿共75页2.浮点数的乘法和除法浮点数的乘法和除法n两个浮点数相乘,乘积的阶码等于两个乘数的阶码之和,乘积两个浮点数相乘,乘积的阶码等于两个乘数的阶码之和,乘积的尾数等于两个乘数的尾数之积,乘积的符号为两个乘数符号的尾数等于两个乘数的尾数之积,乘积的符号为两个乘数符号的的“异或异或”。第67页,本讲稿共75页n两个浮点数相除,商的阶码等于被除数的阶码减去除数的阶码两个浮点数相除,商的阶码等于被除数的阶码减去除数的阶码得到的差,