第二章数据的表示、运算与校验_第1页
第二章数据的表示、运算与校验_第2页
第二章数据的表示、运算与校验_第3页
第二章数据的表示、运算与校验_第4页
第二章数据的表示、运算与校验_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 数据的表示、运算与校验数据的表示、运算与校验2.1数值型数值型数据的表示数据的表示方法方法2.1.1进位计数制进位计数制数码:用不同的数字符号来表示一种数制的数值,这些数字符号数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为数码。称为数码。基:数制所使用的数码的个数。基:数制所使用的数码的个数。权:某数制各位所具有的值。(相邻两位权值之比等于基数)权:某数制各位所具有的值。(相邻两位权值之比等于基数)1.计算机中常用的进位制计算机中常用的进位制1)二进制)二进制每个数位仅允许取每个数位仅允许取0或或1两种值,逢两种值,逢2进位,借进位,借1当当2,基数为,基数为2。2

2、)八进制)八进制所使用的数码是所使用的数码是8个:个:0,1.7,逢逢8进位,借进位,借1当当8,基数为,基数为8,各,各位的权是以位的权是以8为底的幂。为底的幂。3)十六进制)十六进制基为基为16,所用数码为,所用数码为0-9,A-F,共共16个,逢个,逢16进位,借进位,借1当当16,各,各位的权是以位的权是以16为底的幂。为底的幂。4)十进制)十进制5)二)二十十进制进制为了解决二进制和十进制之间的转换问题,引入了二为了解决二进制和十进制之间的转换问题,引入了二十十进制,即进制,即用四位二进制数表示一位十进制数。用四位二进制数表示一位十进制数。对二对二十十进制的运算可先按二进制数运算,如

3、果每位和进制的运算可先按二进制数运算,如果每位和 9,不必修,不必修正;如果和正;如果和 9,则作,则作 “加六修正加六修正”。2.各种进位制之间的相互转换各种进位制之间的相互转换1)十进制整数转换位二进制整数)十进制整数转换位二进制整数减权定位法减权定位法若转换后的二进制代码序列为若转换后的二进制代码序列为XnXn-1X1X0,则从高位起将十则从高位起将十进制数依次与二进制数各位的权值进行比较。若够减,则对进制数依次与二进制数各位的权值进行比较。若够减,则对应位应位Xi=1,减去该位权值后继续往下比较;若不够减,则对应减去该位权值后继续往下比较;若不够减,则对应位位Xi=0,越过该位后继续往

4、下比较;如此反复进行,直到所有越过该位后继续往下比较;如此反复进行,直到所有二进制位的位权都比较完毕为止。二进制位的位权都比较完毕为止。(116)10=(1110100)2除基取余除基取余将十进制整数除以将十进制整数除以2,所得余数作为对应的二进制数低位的值;,所得余数作为对应的二进制数低位的值;继续对商除以继续对商除以2,所得的各次余数就是二进制数的各位值;如,所得的各次余数就是二进制数的各位值;如此进行直到商等于此进行直到商等于0为止。为止。2)十进制小数转换为二进制小数)十进制小数转换为二进制小数减权定位法减权定位法(0.635)10=(0.101)2乘基取整乘基取整将待转换的二进制小数

5、乘以基数将待转换的二进制小数乘以基数2,所得的整数部分就是二进,所得的整数部分就是二进制小数的高位值;继续对所余小数部分乘以基数制小数的高位值;继续对所余小数部分乘以基数2,所得的整,所得的整数部分就是次高位的值,如此继续,直到乘积的小数部分已为数部分就是次高位的值,如此继续,直到乘积的小数部分已为0,或以满足所需精度要求为止。,或以满足所需精度要求为止。3)二进制整数转换位十进制整数)二进制整数转换位十进制整数按权相加按权相加(1011)2=(11)10逐次乘基相加法逐次乘基相加法从二进制的最高位开始,乘以基数从二进制的最高位开始,乘以基数2,然后与次高位,也就,然后与次高位,也就是相邻低位

6、相加;所的结果再乘以基数是相邻低位相加;所的结果再乘以基数2,再与相邻低位相,再与相邻低位相加;如此继续,直到加上最低位为止。加;如此继续,直到加上最低位为止。4)二进制小数转换位十进制小数)二进制小数转换位十进制小数按权相加按权相加(0.1011)2=(0.6875)10逐次除基相加逐次除基相加从二进制的最低位开始,除以基数从二进制的最低位开始,除以基数2之后与次低位(也就是之后与次低位(也就是相邻高位)相加,所的结果再除以基数相邻高位)相加,所的结果再除以基数2,继续与相邻高位,继续与相邻高位位相加,再除以位相加,再除以2;如此继续,直到与小数点后的第一位相;如此继续,直到与小数点后的第一

7、位相加并除以加并除以2为止。为止。2.1.2带符号数的表示带符号数的表示真值:用正负号加绝对值表示的数值。真值:用正负号加绝对值表示的数值。机器数:在计算机内部,连同数符一起数码化了的数。机器数:在计算机内部,连同数符一起数码化了的数。1.原码表示法原码表示法让数码序列的最高位为符号位,符号位为让数码序列的最高位为符号位,符号位为0表示该数为正,为表示该数为正,为1表示该数为负。定义如下:表示该数为负。定义如下:1)定点小数的原码序列为定点小数的原码序列为X0.X1X2XnX原=X 0 X 11-X=1+|X| -1X0计数制计数制符号数字化符号数字化编码编码2)定点整数的原码序列为定点整数的

8、原码序列为XnXn-1 X1X03)结论:结论:真值真值0有有+0和和-0之分。之分。对于小数原码,表示范围对于小数原码,表示范围-1 X 1对于整数原码,表示范围对于整数原码,表示范围- 2n X 2n符号位不是数值的一部分,是人为地约定符号位不是数值的一部分,是人为地约定“0正正1负负”X原=X 0 X 2n2n-X=2n+|X| - 2n X02.补码表示法补码表示法1)补码定义)补码定义统一定义为:统一定义为: X补补=M+X (mod M)正数模舍去,负数模减去真值的绝对值。正数模舍去,负数模减去真值的绝对值。定点小数补码序列为定点小数补码序列为X0.X1X2Xn ,则定义为:则定义

9、为:X补=X 0 X 12+X=2-|X| -1 X 0例例: x= -0.1011 x补补=10+x=10.0000-0.1011=1.0101y=-0.01111y补补=10+y=10.00000-0.01111=1.10001定点整数序列定点整数序列XnXn-1 X1X0 ,则定义为:则定义为:X补=X 0 X 2n2n+1+X=2n+1-|X| - 2n X 02)由真值、原码转换为补码)由真值、原码转换为补码正数补码表示与原码相同正数补码表示与原码相同负数原码转换为补码方法有二:负数原码转换为补码方法有二:#“变反加变反加1”符号位保持为符号位保持为1不变,其余各位先变反,然后在末位

10、不变,其余各位先变反,然后在末位加加1。#符号位保持为符号位保持为1不变,尾数部分自低位向高位,第一个不变,尾数部分自低位向高位,第一个1及其以前及其以前的各低位的各低位0都保持不变,以后的各位则按位变反。都保持不变,以后的各位则按位变反。例:若例:若X=0.1011,则则8位字长的位字长的X补补=0.1011000若若X= -0.1011,则则8位字长的位字长的X补补=1.0101000若若X=1011,则则8位字长的位字长的X补补=00001011若若X= -1011,则则8位字长的位字长的X补补=111101013)由补码表示转换为原码与真值)由补码表示转换为原码与真值对于正数:对于正数

11、: X原原= X补补对于负数:对于负数:X原原= X补补补补4)已知)已知X补补求求-X补补对于对于X补补连同符号位一起各位变反末尾加连同符号位一起各位变反末尾加15)算术移位,左移可由)算术移位,左移可由X补补求求2X补补、 4X补补;右移可由;右移可由X补补求求 X补补/2 、 X补补/46)变相补码变相补码(双符号补码双符号补码)为了防止溢出而设定为了防止溢出而设定(3 3)移位规则)移位规则(1)单符号位)单符号位 : 0 01110 1110 (2)双符号位:)双符号位:00 1110 00 0111正数补码和原码的移位规则正数补码和原码的移位规则左移左移右移右移右移右移0 0111

12、 0 0011 左移左移左移左移右移右移右移右移01 1100 00 1110 00 0111 数符不变数符不变(单:符号位不变;双:第一符号(单:符号位不变;双:第一符号位不变)。位不变)。空位补空位补0(右移时第二符号位移至尾数最高位)。(右移时第二符号位移至尾数最高位)。(3 3)移位规则)移位规则(1)单符号位)单符号位 : 1 10111 0110 (2)双符号位:)双符号位:10 1100 11 0110负数补码移位规则负数补码移位规则左移左移右移右移右移右移1 1011 1 1101 左移左移右移右移右移右移11 0110 11 1011 数符不变数符不变(单:符号位不变;双:第

13、一符号(单:符号位不变;双:第一符号位不变)。位不变)。左移空位补左移空位补0(第二符号位移至尾数最高位)。(第二符号位移至尾数最高位)。右移空位补右移空位补16)讨论:)讨论: 补码最高位作为符号位,补码最高位作为符号位,“0正正1负负”,但补码的符号位是,但补码的符号位是数值的一部分。数值的一部分。 补码表示中,数值补码表示中,数值0只有一种表示。只有一种表示。 负数补码的表示范围比原码稍宽一些,即多一种组合。负数补码的表示范围比原码稍宽一些,即多一种组合。 补码可实现化减为加。补码可实现化减为加。3.反码表示法反码表示法正数的反码表示与原码相同;负数反码的符号位为正数的反码表示与原码相同

14、;负数反码的符号位为1,尾数由,尾数由原码尾数逐位变反。原码尾数逐位变反。定点小数反码序列为定点小数反码序列为X0.X1X2Xn ,则定义为:则定义为:定点整数的反码序列定点整数的反码序列XnXn-1 X1X0 ,则定义为则定义为X反=X 0 X 1(2-2-n)+X -1 X 0X反=X 0 X 2n(2n+1-1)+X - 2n X 04.移码(增码)移码(增码)设定点整数移码序列为设定点整数移码序列为Xm X2X1X0,则定义为:则定义为: x移移=2m+X -2m X 2m结论:结论:最高位为符号位,最高位为符号位,1正正0负负零的移码是唯一的零的移码是唯一的1000000,除符号位外

15、,移码各位与补码同除符号位外,移码各位与补码同用移码表示便于比较数的大小,移码大真值就大,移码小真值用移码表示便于比较数的大小,移码大真值就大,移码小真值就小。就小。将十进制真值将十进制真值(127,1,0,1,127)列列表表示成二进制数及原码、反码、补码、表表示成二进制数及原码、反码、补码、移码值。移码值。2.1.3数的定点表示与浮点表示数的定点表示与浮点表示1.定点表示法定点表示法在计算机中小数点的位置固定不变的数叫做定点数。在计算机中小数点的位置固定不变的数叫做定点数。1)无符号定点整数)无符号定点整数略去符号位的正整数,小数点位于最低位之后,实际是不存在略去符号位的正整数,小数点位于

16、最低位之后,实际是不存在的。的。若无符号定点整数的代码序列为若无符号定点整数的代码序列为XnXn- 1 X1X0,则有则有 :最大整数最大整数 2n+1-1 111.11最小非零正数最小非零正数 1 00001表示范围表示范围0- 2n+1-1 ;分辨率分辨率12)带符号定点整数)带符号定点整数原码定点整数表示范围:原码定点整数表示范围: -(2n-1 ) (2n-1 )补码定点整数表示范围:补码定点整数表示范围: -2n (2n-1 )分辨率均为分辨率均为13)带符号定点小数)带符号定点小数原码定点小数表示范围:原码定点小数表示范围: -( 1 2-n ) ( 1 2-n )补码定点小数表示

17、范围:补码定点小数表示范围: -1 ( 1 2-n)分辨率均为:分辨率均为: 2-n以定点整数为例以定点整数为例,用数轴形式说明原码、反码、用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。补码表示范围和可能的数码组合情况。 设机器字长设机器字长16位位,定点表示定点表示,尾数尾数15位位,数符数符1位位,问:问:(1)定点原码整数表示时定点原码整数表示时,最大正数是多少最大正数是多少?最小最小负数是多少负数是多少?(2)定点原码小数表示时定点原码小数表示时,最大正数最大正数是多少是多少?最小负数是多少最小负数是多少?(1)定点原码整数表示最大正数值(2151)10(32767)10

18、最小负数值(2151)10(32767)10(2)定点原码小数表示 最大正数值(1215)10(0.111.11)2最小负数值(1215)10(0.111.11)2关于比例因子的设置。关于比例因子的设置。(1.1100+1.1000)2.浮点表示法浮点表示法1)浮点数的格式)浮点数的格式N=REMN为真值,为真值,RE为比例因子,为比例因子,M为尾数为尾数MnM2M1MfEmE2E1Ef阶码E阶符数符尾数ME为正,尾数为正,尾数M扩大若干倍,扩大若干倍,E为负,尾数为负,尾数M缩小若干倍;缩小若干倍;R是是阶码的底,与尾数的基相同。阶码的底,与尾数的基相同。阶码二进制位数决定浮点数的表示范围,

19、尾数二进制位数阶码二进制位数决定浮点数的表示范围,尾数二进制位数决定决定浮点数的精度浮点数的精度 为了充分利用尾数部分的有效位数,一般采取规格化的约定,为了充分利用尾数部分的有效位数,一般采取规格化的约定,当当R=2时,规格化的含义是满足条件时,规格化的含义是满足条件1/2 |M| 1。对于正数和对于正数和原码表示的负数,规格化的特征是原码表示的负数,规格化的特征是M1=1;对于用补码表示的对于用补码表示的负数,除负数,除-1/2这个特例这个特例(1.10000)外,规格化的特征外,规格化的特征M1=0。若浮点数的格式如下,阶码部分若浮点数的格式如下,阶码部分m+1位,位,含一位阶符,补码表示

20、,以含一位阶符,补码表示,以2为底;尾数为底;尾数部分部分n+1位,含一位数符,补码表示规格位,含一位数符,补码表示规格化,求其典型值化,求其典型值(最小的正数、负数,最最小的正数、负数,最大的正数和、负数大的正数和、负数)。MnM2M1MfEmE2E1Ef阶码E阶符数符尾数M2.2 2.2 定点加法、减法运算定点加法、减法运算2.2.12.2.1补码加减法补码加减法n用补码表示的数进行加减运算,符号位直接用补码表示的数进行加减运算,符号位直接参加运算。参加运算。n简化了加减运算方法,化简化了加减运算方法,化“减减”为为“加加”,实现硬件简单。实现硬件简单。1. 基本关系式基本关系式 ( X

21、+ Y )补补 = X补补 + Y补补 (1) ( X - Y )补补 = X补补 + (-Y)补补 (2)式(式(1):):操作码为操作码为“加加”时,两数直接相加。时,两数直接相加。3) X= 3 Y= 2 X补补=0 0011 Y补补=1 11100 0001(+1补码)补码)2) X= 3 Y= 2 X补补=1 1101 Y补补=1 11101 1011 ( 5补码)补码)1) X=3 Y=2 X补补=0 0011 Y补补=0 00100 0101(+5补码)补码)4) X= 3 Y= 2 X补补=1 1101 Y补补=0 00101 1111 (1补码)补码)例例. 求求(X+Y)补

22、补 ( X - Y )补补 = X补补 + (-Y)补补 (2)式(式(2):):操作码为操作码为“减减”时,将减转换为加。时,将减转换为加。 1) X= 4 Y= 5 X补补=0 0100 Y补补=1 1011(-Y)补补=0 01010 1001(+9补码)补码)2) X= 4 Y= 5 X补补=1 1100 Y补补=0 0101(-Y)补补=1 10111 0111 (9补码)补码)例例. 求求(X Y)补补Y补补 (Y)补补:将将Y Y补补变补变补不管不管Y Y补补为正或负,将其符号连同为正或负,将其符号连同尾数一起各位变反,末位加尾数一起各位变反,末位加1 1。即将减数变补后与被减数

23、相加。即将减数变补后与被减数相加。 X补补=0 0100 Y补补=1 1011 X补补=1 1100 Y补补=0 0101注意:某数的注意:某数的补码表示补码表示与某数与某数变补变补的区别。的区别。例例. 1 0101. 1 0101原原 1 1011 1 1011补码表示补码表示1 00111 0011补补 0 1101 0 1101变补变补例例. . 1 1 0101 0101原原 1 1 1011 1011 0 0101 0 0101原原 0 0101 0 0101补码表示补码表示符号位不变;符号位不变; 0 0 0101 0101原原 0 0 0101 0101 1 01011 010

24、1原原 1 1 10111011 0 01010 0101原原 0 01010 0101负数尾数改变,负数尾数改变,正数尾数不变。正数尾数不变。0 00110 0011补补 1 1101 1 11011 1 0011 0011补补 0 0 1101 11010 0 0011 0011补补 1 1 1101 11011 00111 0011补补 0 11010 11010 00110 0011补补 1 11011 1101变补变补符号位改变,符号位改变,尾数改变。尾数改变。补码的机器负数补码的机器负数2. 算法流程算法流程操作数用补码表示,符操作数用补码表示,符号位参加运算号位参加运算结果为补码

25、表示,符号结果为补码表示,符号位指示结果正负位指示结果正负X补补+Y补补X补补+(-Y)补补ADDSUB2.2.2 溢出判断溢出判断一、溢出判别一、溢出判别在什么情况下可能产生溢出?在什么情况下可能产生溢出?两正数加,变负数,上溢(大于机器所能表示的最大数)两正数加,变负数,上溢(大于机器所能表示的最大数)两负数加,变正数,下溢(小于机器所能表示的最小数)两负数加,变正数,下溢(小于机器所能表示的最小数)例例. .数数A A有有4 4位尾数,位尾数,1 1位符号位符号SASA 数数B B有有4 4位尾数,位尾数,1 1位符号位符号SB SB 符号位参加运算符号位参加运算 如何判断运算结果产生了

26、溢出?如何判断运算结果产生了溢出?判断溢出将使用到的信息:判断溢出将使用到的信息:操作数的符号位操作数的符号位S SA A和和S SB B结果符号结果符号SfSf符号位进位符号位进位CfCf尾数最高位进位尾数最高位进位C C正确正确0 00110 0010(1)A=3 B=2 3+2:0 0101 (2)A=10 B=7 10+7: 0 10100 01111 0001 正溢正溢正确正确负溢负溢正确正确正确正确(3)A= -3 B= -2-3+(-2):1 1011 1 11011 1110(4)A= -10 B= -7 -10+(-7):0 1111 1 01101 1001(5)A=6 B

27、= -4 6+(-4):0 0010 0 01101 1100(6)A= -6 B=4 -6+4:1 1110 1 10100 0100(2)A=10 B=7 10+7 :0 1010 0 01111 0001 (4)A= -10 B= -7 -10+(-7):0 1111 1 01101 10011. 硬件判断逻辑一(硬件判断逻辑一(SA、SB与与Sf的关系)的关系)溢出溢出= = S SA AS SB BS Sf fS SA AS Sf fS SB B溢出溢出= = C Cf f C C溢出溢出= = S Sf1f1 S Sf2f22. 硬件判断逻辑二(硬件判断逻辑二(Cf与与C的关系)的

28、关系)3. 硬件判断逻辑三(双符号位硬件判断逻辑三(双符号位)二、二、 舍入方法舍入方法1. 0舍舍1入(原码、补码)入(原码、补码)0 00100原原 1 00101原原 1 11011补补 2. 末位恒置末位恒置1(原码、补码)(原码、补码)0 00100原原 1 11011补补 1 00101原原 0 0010原原 1 0011原原 1 1110补补 0 0011原原 1 0011原原 1 1101补补 1 0011原原 1 1101补补 例例. 保留保留4位尾数:位尾数: 例例. 保留保留4位尾数:位尾数: 三、三、 移位操作移位操作1. 移位类型移位类型逻辑移位:数码位置变化,数值逻

29、辑移位:数码位置变化,数值不变不变。算术移位算术移位 1 0 0 0 1 1 1 1循环左移:循环左移:0 :数码位置变化,数值:数码位置变化,数值变化变化,符号位不变。符号位不变。1 0 0 1 1 1 1 算术左移算术左移:1 0 0 1 1 1 1 10 1 1 1 1 0 (-15)(-30) 移位寄存器:移位寄存器:2. 移位逻辑移位逻辑在寄存器中移位在寄存器中移位(串行接串行接口中口中)D4 D3 D2 D1D4 D3 D2 右移右移左移左移 D3 D2 D1 移位门:移位门: 斜位传送(运算器中)。斜位传送(运算器中)。左斜左斜 右斜右斜 4 3 1 2门门4 门门3 门门2 门

30、门1移位寄存器移位寄存器移位门移位门加法器加法器2.2.3定点乘法运算定点乘法运算一、一、 原码一位乘法原码一位乘法 每次用一位乘数去乘被乘数。每次用一位乘数去乘被乘数。 1.1.算法分析算法分析乘法乘法 部分积累加、移位。部分积累加、移位。例例. 0.11011.10111.1011乘积乘积 P = X P = X Y Y积符积符 S SP P= S= SX X S SY YX原原Y原原每次将一位乘数所对应的部分积与原部每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。分积的累加和相加,并移位。设置寄存器:设置寄存器: A A:存放存放部分积累加和部分积累加和, ,最后为最后为乘积

31、高乘积高4 4位位 B B:存放存放被乘数被乘数 C C:存放存放乘数乘数、最后为、最后为乘积低乘积低4 4位位 设置初值:设置初值: A = 00.0000A = 00.0000 B = X = 00.1101 B = X = 00.1101 C = Y = .1011 C = Y = .1011 步数步数 条件条件 操作操作 A C A C 00.0000 .101 00.0000 .1011 1 1 1)C Cn n=1=1+ +B BC Cn n+ 00.1101+ 00.110100.00.11011101 0.1101 0.1101 0.1010.1011 1 1101 1101

32、1101 1101 0000 0000 1101 1101 0.10001111 0.10001111BC 1101 1101 00.00.011001101 1.10.101 1 0.1101 0.1101 0.100.101 11 12 2)C Cn n=1=1+ +B B+ 00.1101+ 00.11010 01 1. .0011001100.00.100110011111.1.10 0 0.1101 0.1101 0.10.10 01111 0.1101 0.1101 0.10110.1011 1101 1101 1101 1101 0000 0000 1101 1101 0.100

33、01111 0.10001111BC3 3)C Cn n=0=0+0+0+ 00.0000+ 00.000000.00.1001100100.00.01000100111111. .1 14 4)C Cn n=1=1+ +B B+ 00.1101+ 00.11010 01 1. .0001000100.00.1000100011111111X X原原Y Y原原 = 1.10001111= 1.10001111 2. .算法流程算法流程0 0 A A、X BX B、Y CY C、0 CR0 CRC Cn n = 1 = 1 ?CR = n CR = n ?1/21/2(A+BA+B) A A,C

34、 C1/21/2(A+0A+0) A A,C C CR + 1 CRCR + 1 CRYYNN Sx + Sy SSx + Sy SA A 3.3.运算规则运算规则(1)(1)操作数和结果用原码表示;操作数和结果用原码表示;(2)(2)绝对值运算,符号单独处理;绝对值运算,符号单独处理;(3)(3)被乘数被乘数( (B)B)、累加和累加和( (A)A)取双符号位;取双符号位;( (4 4) )乘数末位乘数末位C Cn n为判断位为判断位, ,其其值值决定下步操作;决定下步操作;(5)(5)若若Cn=1,Cn=1,则部分积加则部分积加B B,并右移一位;并右移一位; 若若Cn=0,Cn=0,则部

35、分积加则部分积加0 0,并右移一位;,并右移一位; ( (6 6) )作作n n次循环(累加、右移)。次循环(累加、右移)。二、二、 补码一位乘法补码一位乘法 1.1.算法分析算法分析 X X补补 = = X X0 0.X.X1 1X X2 2X Xn n (XY) (XY)补补 = X= X补补.Y= X.Y= X补补.Y.Y补补 (1 1)Y Y为正:为正:Y Y补补 = 0.= 0.Y Y1 1Y Y2 2Y Yn n (XY)(XY)补补 = = X X补补(0.(0.Y Y1 1Y Y2 2Y Yn n) )(2 2)Y Y为负:为负:Y Y补补 = 1. = 1.Y Y1 1Y Y

36、2 2Y Yn n (XY)(XY)补补 = = X X补补(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补(3 3)Y Y符号任意:符号任意: ( (XY)XY)补补 = = X X补补(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补Y Y0 0符号位符号位(4 4)展开为部分积的累加和形式:)展开为部分积的累加和形式:( (XY)XY)补补 = = X X补补(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补Y Y0 0 = = X X补补(0.(0.Y Y1 1Y Y2 2Y Yn n)-X)-X补补Y Y0 0

37、 = = X X补补(-(-Y Y0 0+ +2 Y2 Y1 1+ +2 Y2 Y2 2+ + +2 Y2 Yn n) )-1-1 -2-2 - -n n = = X X补补 - -Y Y0 0+(+(Y Y1 1-2 Y-2 Y1 1)+()+(2 Y2 Y2 2-2 Y-2 Y2 2)+)+-1-1 -1-1 -2-2-(-(n-1) -nn-1) -n +(+(2 2 Y Yn n-2 Y-2 Yn n) ) = = X X补补 ( (Y Y1 1-Y-Y0 0)+2 (Y)+2 (Y2 2-Y-Y1 1)+2 (Y)+2 (Y3 3-Y-Y2 2)+)+-1 -2-1 -2 +2 (0

38、 -+2 (0 -Y Yn n) )- -n n +2 (+2 (0 0 - -Y Yn n) )- -n nY Yn+1n+1 = = X X补补 ( (Y Y1 1-Y-Y0 0)+2 ()+2 (Y Y2 2-Y-Y1 1)+2 ()+2 (Y Y3 3-Y-Y2 2)+)+-1 -2-1 -2 +2 (+2 (0 0 - -Y Yn n) )- -n nY Yn+1n+1= X X补补 . .( Y Yi+1i+1- -Y Yi i)2)2- -i i)ni=0比较法:用相邻两位乘数比较的结果决定比较法:用相邻两位乘数比较的结果决定 + +X X补补、- -X X补补或或+0+0。A0

39、补补=0A1补补=2-1A0补补+(Y Yn+1n+1- -Y Yn n)x补补A2补补=2-1A1补补+(Y Yn n- -Y Yn-1n-1)x补补.An补补=2-1An-1补补+(Y Y2 2- -Y Y1 1)x补补XY补补= An补补+(Y Y1 1- -Y Y0 0)x补补 2.2.比较法比较法算法算法Y Yn n( (高位高位) ) Y Yn+1n+1( (低位低位) ) 操作操作( (A A补补为部分积累加和为部分积累加和) ) 0 00 00 10 11 01 01 1 1 1 1/21/2A A补补 1/2( 1/2(A A补补+ +X X补补) ) 1/2( 1/2(A

40、A补补- -X X补补) ) 1/2 1/2A A补补( 0 )( 0 )( 1 )( 1 )(-1 )(-1 )( 0 )( 0 )3.3.运算实例运算实例X=-0.1101,Y=-0.1011,X=-0.1101,Y=-0.1011,求求( (XY)XY)补补。初值:初值:A=00.0000,B=XA=00.0000,B=X补补=11.0011,=11.0011, - -B=(-X)B=(-X)补补=00=00.1101,.1101,C =YC =Y补补=1=1.0101.0101步数步数 条件条件 操作操作 A C A C 00.0000 1.010 00.0000 1.0101 1 1

41、 1)1 01 0- -B BC Cn n+ 00.1101+ 00.110100.00.1101110100.00.011001101 11.011.0101012 2)0 10 1+ +B B+ 11.0011+ 11.001111.11.1001100111.11.1100110011111.01.010103 3)1 01 0- -B B+ 00.1101+ 00.110100.00.1001100100.00.010001001111111.1.01014 4)0 10 1+ +B B+ 11.0011+ 11.001111.11.0111011111.11.101110111111

42、11111.01.00 0 C Cn+1n+1C Cn nC Cn+1n+15 5)1 01 0- -B B+ 00.1101+ 00.1101( (XY)XY)补补 = 0.10001111= 0.1000111100.00.1000100011111111(1)(1)A A、B B取双符号位,符号参加运算;取双符号位,符号参加运算;(2)(2)C C取单符号位,符号参加移位。取单符号位,符号参加移位。(3)(3)C C末位设置附加位末位设置附加位C Cn+n+1 1,初值为初值为0 0,C Cn nC Cn+n+1 1组成判组成判 断位,决定运算操作断位,决定运算操作;(4)(4)作作n

43、n位运算位运算, , 需作第需作第n+1n+1步步, ,最后一步不移位。最后一步不移位。 4.4.运算规则运算规则5. .算法流程算法流程0 0 A A、XX补补 B B、YY补补 C C、0 CR0 CRY Yn n Y Yn+1n+1 = =?CR=n+1 CR=n+1 ?Ai补补不变不变Ai补、补、Y右移一位右移一位,i+1 CRCR00YN1110Ai补补 +-X补补Ai补补 +X补补01结束结束2.3.4 定点除法运算定点除法运算手算:除数右移,够减商手算:除数右移,够减商1,相减相减,不够减商不够减商0,不减,不减例:例:-0.1001/0.1011商商-0.1101,余数,余数0

44、.00000001计算机实现余数左移,够减商计算机实现余数左移,够减商1,不够减商,不够减商0计算机要解决的问题:计算机要解决的问题:如何判断够减?(先判后减和先减后判)如何判断够减?(先判后减和先减后判)如何处理符号位?如何处理符号位?如何提高运算速度?如何提高运算速度?一、一、 原码恢复余数法原码恢复余数法1.1.算法算法 比较两数大小可用减法试探。比较两数大小可用减法试探。2 2余数余数- -除数除数= =新余数新余数为正为正: :够减够减, ,商商1 1。下一步。下一步作作r ri+1i+1= =2 2r ri i-Y-Y为负为负: :不够减不够减, ,商商0,0,恢复恢复原余数。原余

45、数。2.2.实例实例X=-0.10110X=-0.10110,Y=0.11111Y=0.11111,求求X/Y,X/Y,给出商给出商Q Q和余数和余数R R。设置:设置:A A:被除数、余数,被除数、余数,B B:除数,除数,C C:商商初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q = 0.00000C= Q = 0.00000 - -B= 11.00001B= 11.00001步数步数 条件条件 操作操作 A C A C 00.10110 0.0000000.10110 0.00000 1

46、1)0 0- -B B 01.01100 01.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)1 1 - -B B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)恢复余数恢复余数+ +B B+00.11111+00.1111100.1101000.1101001.1010001.101000.000.001011014 4)0 0- -B B +11.00001+11.0000100.1010100.10101C Cn nS SA AQ

47、Q1 1 Q Q2 2 Q Q3 3 r r0 02 2r r0 0r r1 12 2r r1 1r r2 2r r2 22 2r r2 2r r3 3步数步数 条件条件 操作操作 A C A C 00.10101 0.0000.10101 0.00101 101 5 5)0 0- -B B 01.01010 01.01010+11.00001+11.0000100.0101100.010110.00.0101110116 6)1 1 - -B B00.1011000.10110+11.00001+11.0000111.1011111.101110.0.10110101107 7)恢复余数恢复

48、余数+ +B B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 Q Q5 5 Q Q3 3 r r3 32 2r r3 3r r4 42 2r r4 4r r5 5r r5 5R= 0.10110R= 0.101102 2-5-5X/Y=-0.10110+X/Y=-0.10110+-0.10110-0.101102 2-5-5 0.11111 0.111113.3.说明说明(1 1)A A、B B双符号位,装双符号位,装X X与与Y Y的绝对值的绝对值,|,|X|X|小于小于|Y| |Y| 。(2)(2)

49、若最后一步所得余数为负,则应恢复余数,以若最后一步所得余数为负,则应恢复余数,以保证保证r0r0。(3 3)运算结束后,余数乘以运算结束后,余数乘以2 2- -n n ,与被除数同号。与被除数同号。第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步: :r r2 2+B=+B=r r2(2(恢复余数恢复余数) )第四步第四步: :2 2r r2 2-B=-B=r r3 32 2r r2 2-B=2(-B=2(r r2 2+B)-B+B)-B =2 =2r r2 2+B=+B=r r3 3 第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步:

50、:2 2r r2 2+B=+B=r r3 3 ( (不恢复余数不恢复余数) )二、二、 原码不恢复余数法原码不恢复余数法(加减交替法加减交替法)1.1.算法分析算法分析恢复余数法恢复余数法不恢复余数法不恢复余数法2.2.算法算法取绝对值相除,符号位单独处理取绝对值相除,符号位单独处理2 2)| |X|X|小于小于|Y| |Y| 3 3)根据余数符号判断上商,为正商)根据余数符号判断上商,为正商1 1,为负商,为负商0 04 4)ri+1=2ri+(1-2Qi)Yri+1=2ri+(1-2Qi)Yriri为正,则为正,则QiQi为为1 1,第,第i+1i+1步作步作2 2ri-Yri-Y;rir

51、i为负,则为负,则QiQi为为0 0,第,第i+1i+1步作步作2 2ri+Yri+Y。5 5)求求n n位商,做位商,做n n步操作;若第步操作;若第n n步余数为负,则做第步余数为负,则做第n+1n+1步恢复余步恢复余数,不移位,最终余数符号与被除数相同。数,不移位,最终余数符号与被除数相同。3.3.实例实例X=0.10110,Y=-0.11111X=0.10110,Y=-0.11111,求求X/YX/Y,给出商给出商Q Q和余数和余数R R。初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q

52、= 0.00000C= Q = 0.00000 - -B=11.00001B=11.00001步数步数 条件条件 操作操作 A C A C 00.10110 0.0000000.10110 0.00000 1 1)为正为正- -B B 01.01100 01.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)为负为负 - -B B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)+ +B B+00.11111+00.1111111.101101

53、1.101100.000.00101101为正为正00.1010100.10101C Cn n r rf fQ Q1 1 Q Q2 2 Q Q3 3 r r0 02 2r r0 0r r1 12 2r r1 1r r2 22 2r r2 2r r3 34 4)为正为正- -B B 01.01010 01.01010+11.00001+11.0000100.0101100.010110.00.010111011Q Q4 4 2 2r r3 3r r4 4步数步数 条件条件 操作操作 A C A C 00.01011 0.000.01011 0.01011 1011 6 6)为负为负 恢复余数恢复

54、余数+ +B B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 r r4 45 5)为正为正- -B B 00.10110 00.10110+11.00001+11.0000111.1011111.101110.0.1011010110Q Q5 5 2 2r r4 4r r5 5r r5 5R= 0.10110R= 0.101102 2-5-5X/Y=-0.10110+X/Y=-0.10110+ 0.10110 0.101102 2-5-5 -0.11111 -0.111114. .算法流程算法流程|X|

55、 A|X| A、|Y| B|Y| B、0 0 C C、0 CR0 CR A0 A0A0?YYNA+BAN三、补码不恢复余数除法三、补码不恢复余数除法1.算法算法X补补Y补补数符数符商符商符第一步第一步操作操作r补补Y补数补数符符上商上商 下一步操作下一步操作同号同号0减减同号同号异号异号102 2 riri补补- -Y Y补补2 2 riri补补+ +Y Y补补异号异号1加加同号同号异号异号102 2 riri补补- -Y Y补补2 2 riri补补+ +Y Y补补1)第一步操作:被除数与除数同号,商)第一步操作:被除数与除数同号,商1,2*被除数减除数,被除数减除数,被除数与除数异号,商被除

56、数与除数异号,商0, 2*被除数加除数。被除数加除数。2)余数和除数同号,商)余数和除数同号,商1,余数左移,余数左移1位,下次减除数;余数和位,下次减除数;余数和除数异号,商除数异号,商0,余数左移,余数左移1位,下次加除数;位,下次加除数;3)商的符号在第一次试算时求出,但仅仅是假商,只是为除法)商的符号在第一次试算时求出,但仅仅是假商,只是为除法做准备工作,因此为得到做准备工作,因此为得到n位商,共作位商,共作n+1步,第一次上的商移步,第一次上的商移出寄存器,但多数情况下可以得到出寄存器,但多数情况下可以得到n-1位商即可。位商即可。4)商的修正:在精度要求不高的场合,将商的末尾恒置)

57、商的修正:在精度要求不高的场合,将商的末尾恒置1,同,同时符号位加时符号位加1,也即是,也即是n-1假商加假商加(1+2-n)。3.实例实例X=+0.1000X=+0.1000,Y=-0.1010Y=-0.1010,求求 X/Y=X/Y=?A=XA=X补补=00.1000=00.1000B=YB=Y补补=11.0110=11.0110- -B=00.1010B=00.1010C=QC=Q补补=0.0000=0.00002.3.5浮点四则运算浮点四则运算1. 浮点加减运算浮点加减运算步骤:步骤:1 1). .检查能否简化操作。检查能否简化操作。 判操作数是否为判操作数是否为0 0尾数为尾数为0

58、0阶码下溢阶码下溢2 2). .对阶对阶例例. .(1)(1)对阶:使两数阶码相等对阶:使两数阶码相等( (小数点实际位置对齐,小数点实际位置对齐, 尾数对应权值相同尾数对应权值相同) )。(2)(2)对阶规则:对阶规则:小阶向大阶对齐小阶向大阶对齐。2 2 0.10010.10012 2 0.11010.11012 23 32 2 0.01000.01003 32 2 0.11010.11013 33 3). .尾数加减尾数加减. .(1) 1.0001(1) 1.0001 +0.1001 +0.1001(4)(4)阶码比较:比较线路或减法阶码比较:比较线路或减法。(3)(3)对阶操作:对阶

59、操作:小阶阶码增大,尾数右移。小阶阶码增大,尾数右移。例例. .AEBAEBE E,则则B BE E+1 B+1 BE E,B BM M,直到直到B BE E=A=AE E1.10101.1010(2) 0.0101(2) 0.0101 +0.1101 +0.1101A AM M + B+ BM M A AM M4 4). .结果规格化结果规格化 M 1/2M 1M 1应应左移规格化左移规格化应应右移规格化右移规格化A AE E-1 A-1 AE E若若 A Af1f1A Af2f2=1,=1,则右规:则右规:(1) 11.0001(1) 11.0001 +00.1001 +00.100111

60、.101011.1010(2) 00.0101(2) 00.0101 +00.1101 +00.110101.001001.0010(-1/2(-1/2除外除外) )A Af1f1A Af2 f2 A A1 1A AM M1111. .1 1010010若若 A Af1f1A Af2f2A A1 1+A+Af1f1A Af2f2A A1 1=1,=1,则左规:则左规:0101.0010.0010A Af1f1A Af2 f2 A AM MA AE E+1 A+1 AE EA AE E+B+BE EA AB=2 B=2 ( (A AM MB BM M) ) 2. 浮点乘法运算浮点乘法运算步骤:步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论