《计算机组织与结构第2章数据的机器级表示和运算.ppt》由会员分享,可在线阅读,更多相关《计算机组织与结构第2章数据的机器级表示和运算.ppt(126页珍藏版)》请在三一办公上搜索。
1、1,第2章 数据的机器级表示和运算,2,本章结构,3,2.1 数制及转换,1、进位计数制*进位计数制:又称进制或数制,是用一组固定的符号和统一的规则来表示数值的方法。有数码、基数和位权3个基本参数,*常用的4种进制:,*R进制数表示:(N)R=(kn-1k1k0.k-1k-2k-m)R=其中,ki0,1,(R-1),4,2、R进制数转换成十进制数,例1(101.01)2=(122+120+12-2)10=(5.25)10(3A.C)16=(3161+10160+1216-1)10=(58.75)10,3、十进制数转换成R进制数(1)十进制数整数转换成R进制数整数,例2,*转换规则:按位权展开,
2、*整数转换规则:除基取余、上右下左,5,(2)十进制数小数转换成R进制数小数,整数部分0.68758=5.5 5(最高位)0.5 8=4.0 4(最低位)(0.6875)10=(0.54)8,例3将(0.6875)10分别转换成二、八进制数,(3)十进制数转换成R进制数*转换规则:整数部分、小数部分分别转换后再合并,练习1(19.6875)10=(X)2=(Y)8,X=?Y=?,*小数转换规则:乘基取整、上左下右,6,4、二、八、十六进制数相互转换*隐含规律:2=21,8=23,16=24,(1)二进制、八进制数相互转换*转换规则:从小数点向两边分别转换;3个二进制数位(不够时补零)等价于1个
3、八进制数位,例4(13.724)8=(001 011.111 010 100)2=(1011.1110101)2(10011.01)2=(010 011.010)2=(23.2)8,(2)二进制、十六进制数相互转换*转换规则:从小数点向两边分别转换;4个二进制数位(不够时补零)等价于1个十六进制数位,例5(2B.E)16=(0010 1011.1110)2=(101011.111)2(11001.11)2=(0001 1001.1100)2=(19.C)16,7,2.2 数值数据的机器表示,计算机用编码(数据)表示信息:,计算机只支持最常用(最基本)的数据类型:,数据表示计算机硬件能够直接识别
4、和引用的数据类型,应用数据数据表示的转换:程序员或编译程序完成,8,一、机器数及其编码,*数值数据:组成由符号、小数点及数值构成,可缺省符号及小数点 运算符号与数值分开运算;加减法需先比较大小,*机器数:符号数字化的数,通常0/1表示+/-;如(+101)2(0101)2、(-0.101)2(-.101)2(1.101)2 真值带“+”或“-”符号的数,*机器数的运算方法:采用手工运算方法,硬件实现很不方便;如(+x)+(-y)时,先求x-y、再求结果符号、最后求x-y或y-x 采用新运算方法,便于硬件实现(如符号与数值一起运算)必须使用新的编码方法!,*机器数的编码方法:原码、补码、反码、移
5、码等,9,1、原码表示法(原码编码方法)*基本思想:用0/1表示符号+/-,数值位为真值的绝对值,*纯整数原码定义:设X=xn-2x0,xi=0或1,则X原=xn-1xn-2x0,,例1+1101原=01101;-1101原=11101,例2设X原=1101,则X=-101,例3设+X原=0110,则-X原=1110;+X原=0000,则-X原=1000,即+0原-0原,练习1若X=-01000,X原=?若X原=101010,X=?,10,*纯小数原码定义:设X=0.x-1x-(n-1),则X原=x0.x-1x-(n-1),例4+0.1001原=0.1001;-0.1001原=1.1001,例
6、5X原=1.01,则X=-0.01,*原码的特性:,X与X原关系 X原与X表示值的范围相同,+0原-0原;,运算方法符号与数值分开运算(与手工运算一致)适合于乘除法,加减法较复杂,11,2、补码表示法*目标:实现符号与数值一起运算,*有模运算:运算时只计量小于“模”的部分,多余部分被丢弃 模计量系统的计数范围;,(1)有模运算与补数 示例将时针从10点拨向7点,有两种拨法:倒拨10-3=7;顺拨10+9=7+12=7,*补数:若a、b、M满足a+b=M,称a、b互为模M的补数,同余若A、B、M满足A=B+kM(k为有符号整数),则记 AB(mod M),称B和A为模M的同余,运算特征c-a=c
7、-(M-b)=c+b(mod M),即减去一个数等价于加上这个数的补数 可将减法运算转化为加法运算,12,*数据编码思路:使数值部分无减法运算 负数用其正补数表示,正补数可用模加负数求得;例-48(mod 12),即8=12+(-4)正数用其本身表示,即正数的同余数 例 88(mod 12),即8=8+12(mod 12),(2)补码定义*基本思想:设模为M,真值X的X补=M+X(mod M),*纯整数补码定义:设X=xn-2x0,xi=0或1,则X补=xn-1xn-2x0,即,说明因X连同符号位共n位,故模为2n,13,例6+0001补=00001,-0001补=10 0000-0001=1
8、1111+1111补=01111,-1111补=10 0000-1111=10001,练习2若X=-01000、Y=+01000,X补=?Y补=?,例7n=5、X0时,最大X补=01111,Xmax=24-1=+15 X0时,最小X补=10000,Xmin=-24=-16,+0000补=-0000补=00000 数0的补码惟一,正数补码最高位(符号位)为0,负数最高位为1,补码表示数的个数比原码多1个,14,*定点纯小数补码定义:设X=0.x-1x-(n-1),则X补=x0.x-1x-(n-1),例8+0.1011补=0.1011-0.1011补=2-0.1011=10.0000-0.1011
9、=1.0101,说明因X的计量范围为-1+2-(n-1)+1-2-(n-1),故模为2,15,(3)补码的特性*X与X补的关系:,设纯整数X=+xn-2x0,Y补=0yn-2y0,xi和yi=0或1 则X补=X=0 xn-2x0 Y=Y补=+yn-2y0,纯小数真值与补码的关系上述方法同样适用,自行推导,16,XX补 若X为正数,改符号位为0,其余各位不变;若X为负数,改符号位为1,其余各位取反、末位加1,例9X=+0101,X补=,X=-0101,X补=,0 0101;,1 1011,X补X 若X补最高位为0,改其为正号,其余各位不变;若X补最高位为1,改其为负号,其余各位取反、末位加1,例
10、10X补=0 0101,X=+0101;,X补=1 1011,X=,-0101,17,X原X补 若X原最高位为0,X补=X原;若X原最高位为1,X补=X原各数值位取反、末位加1,例11 X原=0 0101,X补=,0 0101;,X原=1 0101,X补=,1 1011,X补X原 若X补最高位为0,X原=X补;若X补最高位为1,X原=X补各数值位取反、末位加1,例12 X补=0 0101,X原=,0 0101;,X补=1 0101,X原=,1 1011,18,*X补与-X补的关系:,X补-X补X补的各位取反(含符号位)、末位加1-X补X补-X补的各位取反(含符号位)、末位加1,例13X补=1
11、0110,-X补=0 1001+1,=0 1010,练习3若X=-01001,-X补=?若X补=101010,-X补=?-X=?,19,0 01001,0 01001,1 01010,1 10110,+01010,0 01010,-01110,1 10010,+01110,1 10010,-10010,0 10010,0 10101,0 10101,1 10111,1 01001,20,3、反码表示法*目标:作为原码与补码相互转换时的一种过渡编码,*纯整数反码定义:设X=xn-2x0,xi=0或1,取模=2n-1,则,*纯小数反码定义:设X=0.x-1x-(n-1),xi=0或1,模=2-2-
12、(n-1),则,例14+1101反=01101,-1101反=10010,例15+0.1101反=0.1101,-0.1101反=1.0010,21,*反码与补码关系:若X为正数,X补=X反;若X为负数,X补=X反+1,原码、补码、反码比较:机器数的最高位均为符号位(0/1表示正/负);,+0补=-0补,补码比原码、反码多表示一个负数,若真值X为正数,X原=X补=X反;若真值X为负数,X补=X反+1,X反=X原各位求反(符号位除外);,22,4、移码表示法*目标:实现符号与数值一起编码,*纯整数移码定义:设X=xn-2x0,其中xi=0或1,取模=2n,则 X移=2n-1+X(mod 2n)=
13、2n-1+X-2n-1X2n-1,例16-111移=0001,-001移=0111,000移=1000,+001移=1001,+111移=1111,-1000移=0000,*移码的特性:数在数轴上为连续编码(无符号数),便于比较大小;X移=X补符号位取反、其余各位不变,23,二、数值数据的表示方法,24,3、数值数据的表示方法,*符号问题处理:有符号数用数字表示符号,无符号数符号位置为数值;,*进制问题处理:只支持二进制方式;,*小数点问题处理:点的表示用隐含方式表示;,位置表示约定不同数据类型的位置不同,25,*数码长度问题处理:不同数据类型数码长度固定;便于定长方式处理 同一数据类型可有几
14、种长度;可提高处理及存储效率,*运算问题处理:运算方法按数据表示的格式及编码进行相应运算;,数值数据的处理方法:包括数据的表示和数据的操作方法,数据类型区分由指令操作码区分;,溢出处理硬件检测并发出通知,由软件处理,26,三、数的定点表示,1、定点表示方法 指约定数据中隐含的小数点位置固定不变。,*定点数的表示范围:(设数码长度为n位),*定点表示形式:有约定在数值最低位之后和最高位之前两种,2、定点数的表示 采用定点表示格式的数称为定点数,通常有几种数码长度。,27,四、数的浮点表示,概念:尾数-M,阶E,尾数的基RM,阶的基RE,1、浮点表示方法 指约定数据中隐含的小数点位置是可变的。,表
15、示尾数用定点纯小数表示,阶用定点整数表示,*浮点表示形式:由尾数和阶组成 格式,28,*浮点数的表示范围与精度:假设尾数及阶的基均为2,数值长度分别为m位及e位,2、浮点数的表示 采用浮点表示格式的数称为浮点数,通常有几种数码长度。,例1若浮点表示格式中m=10、e=4,尾数及阶均为补码编码方式,写出(-54)10的机器码。,解:(-54)10=(-110110)2=-0.110112+110,,浮点数机器码为 00110 10010100000,影响因素e决定了范围、m决定了精度,29,例2若浮点表示格式中尾数为8位(含1位符号位)、阶为5位(含1位符号位),写出下列实数的浮点数及机器码。,
16、例3浮点表示格式同例2,写出下列机器码的浮点数。,1 0010 1 1011100,0 1110 0 1011100,1 0101 1 0101001,-0.10110102-110,+0.101112-1011,-0.00110002+1101,30,3、浮点数的规格化*目的:在现有的浮点数表示格式中,使表示精度最大化。,例4若浮点表示格式中m=3、e=3、尾数和阶均为原码编码方式,不同表示方法的浮点数精度不同:+101.1=0.101123=0.0101124=0.00101125,*规格化数的要求:尾数真值的最高位为1,即|M|1,*规格化的操作:左规尾数左移一位,阶码减一;右规尾数右移
17、一位,阶码加一。应用非规格化数规格化数,可能需多次规格化操作,31,例5若浮点数尾数及阶的基均为2,回答下列问题:,*规格化数的表示范围及数码特征:,原码尾数最高数值位为1;,补码尾数最高数值位与符号相反 便于硬件实现,左规3次-0.100002-001,右规4次+0.101112+110,1111 0000,1111 110000,0111 111111,0000 1111,101111 100000,32,4、IEEE 754标准,*表示格式及数码长度:有单精度、双精度两种格式及长度,*编码方式:数制M和E均采用二进制方式(即RM=RE=2);,码制M为原码编码的定点纯小数(改进了定点位置
18、),E为移码编码的定点整数(改进了移码值),33,*阶的码制:采用的是余127码和余1023码 余X码偏移值为X的移码称为余X码,标准移码:真值=E-28-1=E-128,余127码:真值=E-(28-1-1)=E-127;,*尾数的码制:(以单精度格式为例)支持非规格化尾数和规格化尾数两种方式;,规 格 化尾数规格化的尾数真值=1.m-2m-24,机器码M=m-2m-24,尾数精度=24位,阶的范围1E254,而0和255另作他用,即-126阶的真值127,非规格化尾数尾数真值=0.m-1m-23,机器码M=m-1m-23,尾数精度=23位;,34,*IEEE 754标准浮点表示的特征:(以
19、单精度格式为例),35,例6求IEEE 754单精度码为(CC968000)16的浮点数的真值N,例5求(-11/128)10的IEEE 754单精度规格化数的机器码,解(-11/128)10=(-1011)22-7=(-0.1011)22-3=(-1.011)22-4=(-1.011)22123-127,解(CC968000)16=1 10011001 00101101000000000000000 N为负数,浮点数为规格化数(110011001254);,机器码为:,阶=(10011001)2(01111111)2=(00011010)2=(26)10 尾数=(1.00101101)2=(
20、1.17578125)10 N=(1)11.17578125226=-1.17578125226,数值数据的表示小结:表示格式有定点和浮点两种,编码方式可选择与运算器对应的机器数编码,数码长度总是固定的,36,2.3 非数值数据的数据表示,1.二进制编码的十进制数 2.字符及字符串编码 3.逻辑数据的表示,37,一、十进制数编码,*BCD码(Binary Coded Dicimal):又称二-十进制编码,是指用4位二进制编码表示1位十进制数位的编码方式。,*BCD码种类:分有权码和无权码两种,最常用的是8421码。,BCD码缺省指8421码(特殊声明除外)!,*十进制数的编码方法:对各数位按序
21、用BCD码编码,符号编码放在最后;用特定编码表示符号(如1100和1101表示正和负)。,例+427表示为0100 0010 0111 1100-123表示为0001 0010 0011 1101,38,二、字符及字符串编码,1、字符编码*字符编码:字符在字符集中惟一的数字化代码,表示字符在字符集中的序号或特征号,*字符编码的类型:有输入码、内码、交换码、字模码4种,与输入法、字符集大小有关,与字体、字号大小有关,字符交换时的编码(序号),仅与字符集大小有关,字符存储时的编码(数据表示),与字符集大小、存储字长有关,39,*有关字符编码的约定:字符编码均指交换码的编码!字符数据均指内码的编码!
22、,*常见字符编码(交换码)种类:,40,2、字符串编码*字符串特性:由多个字符构成;所含字符数不固定。,*字符串编码方法:由各个字符编码组成;通过特定编码标志字符串的结束,结束编码放在最后 字符集必须包含该字符(如ASCII码中编码为0的字符),例C语言中字符串“am”可编码为1100001 1101101 000000,41,三、逻辑数据的表示*数学特征:值域真、假;运算与(AND)、或(OR)、非(NOT)等,*运算处理方法:可采用所有位同时按位进行与/或/非运算 可获得最大性能一位操作时,软件负责准备数据,*数据的表示方法:数码长度1位n位(n为MEM字长倍数);以提高存储效率,表示格式
23、n个逻辑数据捆绑表示,每个逻辑数据占1位;,例28位逻辑数A和B如何实现第0位的OR操作(结果在A中)?,编码方式各位独立编码,1/0可表示真/假,解:步骤为 C=B AND 01H;A=A OR C,42,附:数据的表示小结,数据的表示方法:有表示格式、编码方式、数码长度3个方面,而数码长度只与数据的实例有关、与数据的类型无关,数据的表示方法实例:,43,MEM字长的确定思路:(系统结构研究的内容)MEM字长=min使用频率很高的各种数据的数码长度 通常,MEM字长=字节(1B=8bit,ASCII码字符的使用频率很高),机器字长的确定思路:(系统结构研究的内容)机器字长=max使用频率很高
24、的各种定点数的数码长度,数据的表示实现:编译程序将语言数据类型转换成机器数据的表示形式;指令操作码 指明机器数据的表示类型;运算器必须具有相应功能处理不同类型的机器数据!,44,2.4 定点数的运算及实现,一、移位运算,1、移位及移位运算*移位:数值相对于某个位置的移动 例20.0m=2000.0cm,称20相对于小数点左移了2位,*移位操作:有左移、右移2种类型;二进制数左移或右移n位相当于乘以或除以2n,*移位运算:对计算机中机器数的移位操作 运算种类对有符号数,有算术左移、算术右移;对无符号数,有逻辑左移、逻辑右移,数据定长表示符号数字化,运算参数操作数、移动位数,45,2、逻辑移位运算
25、*操作数类型:无符号机器数,例1某REG内容为00111001,逻辑移位运算结果如下:,*运算规则:机器数整体移位,移出的数丢弃,出现的空位补0,丢弃部分,丢弃部分,0 0 1 1 1 0 0 1,0 0 1 1 1 0 0 1,*运算实现方法:通常用移位寄存器实现,练习若(REG)=11001001,逻辑左移1位再右移1位的结果?,*溢出判断方法:左移、移丢数码为1时运算溢出,46,3、算术移位运算*操作数类型:有符号机器数(原码、补码、反码等),*运算规则:符号位不变,数值部分整体移位,空位添补规则如下表(根据编码方式的数学特征添补),补码特性2X补=2X补及 X补=XS*2n-1+X补,
26、00100 00100 00100,00001 00001 00001,1010010001,1110011111,1101111110,47,*运算实现方法:通常用移位寄存器实现,*溢出判断方法:左移移丢数值1时溢出,右移移丢数值1仅影响精度,原码左移、移丢数码为1时溢出;补/反码左移、移丢与符号相反的数码时溢出,01000010(+66)00000100(+4),00010000(+16)00000001(+1)00000000(+0),11000010(-66)10000100(-4),10010000(-16)10000001(-1)10000000(-0),10111110(-66)
27、11111100(-4),11101111(-17)11111110(-2)11111111(-1),10111101(-66)11111011(-4),11101111(-16)11111110(-1)11111111(-0),48,3、算术移位与逻辑移位运算比较,*两者区别:移动及空位添补规则不同;有/无符号数学结果,*减少算术移丢位数的方法:可采用带进位的算术移位运算 进位C硬件位,存放无符号加减运算最高位的进位/借位,算术左移会多移丢1位数值位 如:00101011逻辑左移3次后溢出,算术左移2次后溢出,相当于双符号位,应用算术运算后再右移(除2)的场合,49,二、定点加减运算,*有符
28、号数运算:采用与机器数含义对应的运算方法;*无符号数运算:在有符号运算基础上,进行相关处理。,1、补码加减运算,(1)补码加减运算规则*加法:A+B补=A补+B补,推导A补+B补=(A+B+2M)(mod M)=A+B补,*减法:A-B补=A+(-B)补=A补+-B补,例1设A补=1.1101,B补=1.0111,用补码求A-B补,50,例2设A=-01010,B=+01101,用补码求A+B补、A-B补,解:A补=110110,B补=001101;-B补=110011;,例3设A=+6/16,B=+9/16,用补码求A+B补、A-B补,解:A=+0.0110,B=+0.1001;A补=0.0
29、110,B补=0.1001;-B补=1.0111;,A+B补=A补+B补=0.0110+0.1001=0.1111;A-B补=A补+-B补=0.0110+1.0111=1.1101。,练习设A=+15,B=+24,设补码的数码长度为8位(含1位符号位),用补码求A+B补、A-B补。,*加减运算特征:符号与数值一起运算;减法可转为加法运算。,51,(2)补码运算溢出判断方法,即:相同符号数相加、且结果与操作数符号不同时溢出!,*溢出判断:用1位符号位判断,设A补=An-1An-2A0,B补=Bn-1Bn-2B0,Z补=A补+B补=Zn-1Zn-2Z0,溢出标志OVR=,52,例5设A=-11/1
30、6,B=+7/16,A+B补、A-B补是否溢出?,对A+B补,OVR=(1 0)(0 0)=0 不溢出,对A-B补,OVR=(1 0)(1 0)=1 溢出,*溢出判断优化:用结果的符号位及最高数值位进位判断,溢出标志OVR=,正溢出时Cn-1=0(Cn-2=1),对例5的A+B补,OVR=(0 0)=0 不溢出 对例5的A-B补,OVR=(1 0)=1 溢出,53,*溢出判断:用2位符号位判断 变形补码采用2个符号位的补码A变补=AnAn-1An-2A0,AnAn-1表示符号(00为正数、11为负数),例6若X=-010,Y=-110,X+Y变补溢出否?,溢出标志OVR=;ZnZn-1=01时
31、正溢出(=10时负溢出),解:X变补=11 110,Y变补=11 010 X+Y变补=11 110+11 010=11 000 1 1=0 不溢出,练习设A=+15,B=+24,设补码的数值部分长度为5位,分别用1位符号位和2位符号位判断A+B、A-B是否溢出。,54,(3)补码加减运算所需的硬件配置,*取反逻辑实现:,*加减运算所需硬件配置:其中Cn-1为硬件进位位;,无符号运算OVR,55,(4)补码加减运算控制流程,56,(5)基于补码的无符号数加减运算*目标:AB无符号=A无符号B无符号;,*加减运算规则:同补码加减运算;不需要n+1位运算,*溢出判断方法:有进位或借位时溢出(与补码运
32、算不同),溢出标志OVR=Cn-1;,*加减运算所需硬件配置:同补码加减运算;*加减运算控制流程:同补码加减运算,57,2、原码加减运算,(1)原码加减运算规则*目标:AB原=A原B原*运算规则:符号与数值分开运算,先比较大小、后运算;,例1设A原=101010,B原=001101,求A+B原、A-B原.,解A与B异号,P=|A|-|B|=01010-011010即|A|B|;,|B|-|A|=01101-01010=00011,A+B原=0 00011|A|+|B|=01101+01010=10111,A-B原=0 10111,58,(2)原码加减运算的实现方法 由于原码的运算控制复杂,常转
33、换为补码加减运算实现。,*原码加减运算的控制流程:A原A补、B原B补;补码加减运算;Z补Z原,*原码加减运算溢出判断方法:同补码加减运算;,*原码加减运算所需硬件配置:在补码硬件配置基础上,增加取反、补码原码逻辑,(3)基于原码的无符号数加减运算 与基于补码的无符号运算完全相同,作业三:P8021、22、24、25,59,三、定点乘法运算,1、笔纸乘法运算分析,例1设A=+101、B=-110,笔纸乘法过程如下:符号运算(心算),得负号;数值运算 101 110 000|A|200|A|不移位 101|A|211|A|左移1位 101|A|221|A|左移2位 11110 部分积相加,*硬件实
34、现时的需求:加法器硬件通常只有两个输入 定长运算 每次只有两个数相加 旧部分积移位后再相加 每步进行相加形成新部分积,60,*笔纸乘法的改进:,例2设二进制数A=+0.a-1a-2a-3、B=-0.b-1b-2b-3;|A|B|=|A|2-1b-1+|A|2-2b-2+|A|2-3b-3,例3设二进制数A=+a2a1a0、B=-b2b1b0;|A|B|=|A|22b2+|A|21b1+|A|20b0,改进特征左移改为右移(最后补右移的权小数点不变);每次只与部分积高位相加(低位已被移出),=2-1|A|b-1+|A|2-1b-2+|A|2-2b-3=2-1|A|b-1+2-1|A|b-2+2-
35、1(|A|b-3+0)=202-1|A|b-1+2-1|A|b-2+2-1(|A|b-3+0),=22|A|20b2+|A|2-1b1+|A|2-2b0=232-1|A|b2+2-1|A|b1+2-1(|A|b0+0),61,例4设A=+111、B=-110,用笔纸改进法计算乘积,*机器乘法的实现思路:(若乘数数值位数为n-1位),循环n-1次,实现各步的加法和右移;,加法时,判断乘数当前位,决定部分积高位与0或被乘数相加(n-1位加法);,右移时,可将部分积低位放在乘数空出的位置上,1 1 1 1 1 0 0 0 0 PO+0 0 0 0 0 0 P1+1 1 1 1 1 1 0 P2+1
36、1 1 1 0 1 0 1 0 P3,62,2、原码定点乘法运算,(1)原码一位乘法运算(又称基2原码乘法)*原码一位乘法运算规则:设B原=bn-1bn-2b0 乘积符号位SP=an-1 bn-1;,乘积数值位P=|A|B|,迭代公式如下:,P0=0 P1=(P0+|A|b0)2-1 Pn-1=(Pn-2+|A|bn-2)2-1,若为纯整数乘法,|AB|=Pn-12n-1 2n-2位 若为纯小数乘法,|AB|=Pn-120 2n-2位,判断-加法-移位方法:,63,例5设A=-0.111、B=-0.101,用原码一位乘法求AB原,解:A原=1.111,B原=1.101;|A|=0.111,|B
37、|=0.101;乘积数值位运算时,循环3次(判断-加法-移位),=0.1000110 扩展为8位(即2n位),即|AB|=0.100011,乘积符号=a0 b0=0;故 AB原=0.100011 连符号位共7位(即2n-1位),64,*原码一位乘法运算所需硬件配置:设A原和B原为n位原码表示,则AB原为2n位原码表示,实现思路 采用n位加法;无需处理n-1位加法进位部分积逻辑右移,所需硬件配置 REGA、REGB、REGP均为n位REG;计数器C初始值为n-1;控制门受REGB最低位控制(输出0或REGA内容),部分积低位放在乘数空出的位置中 部分积与乘数同时逻辑右移,65,*原码一位乘法运算
38、控制流程:循环的判断-加法-移位,不会产生进位,66,*不同数据类型的数值位数扩展:保持数学上的值不变,定点纯小数无任何动作;硬件配置及算法完全适用,定点纯整数再逻辑右移1次 硬件配置完全适用,*基于原码一位乘法硬件的无符号数乘法:只需对运算控制流程做一些特殊处理,循环改为n次,无需进行数值位扩展;无需所有与符号有关的操作,如求SP、绝对值及置SP;逻辑右移改为带Cn-1的逻辑右移。,67,(2)原码二位乘法运算(又称基4原码乘法)*目标:使一位乘法循环次数减少一半(每次使用2位乘数),*原码二位乘法运算规则:设B原=bn-1bn-2b0 与原码一位乘法类似,迭代公式不同:,P0=0 P1=(
39、P0+|A|b1b0)2-2 P2=(P1+|A|b3b2)2-2 n为奇数时,P(n-1)/2=(P(n-3)/2+|A|bn-2bn-3)2-2,n为偶数时,Pn/2=(P(n-2)/2+|A|bn-2)2-1,68,基本的判断-加法-移位方法 设第i轮循环Pi=(Pi-1+|A|b2i-1b2i-2)2-2,*原码二位乘法运算的实现思路:与一位乘法类似,还是循环的“判断-加法-移位”,69,优化的判断-加法-移位方法 设第i轮循环Pi=Pi-1+|A|(b2i-1b2i-2+T)2-2,+2|A|的实现:采用n+1位加法;左移及进位所需,-|A|的实现:采用n+2位补码加法 采用算术右移
40、,70,初始化时的处理:|B|前补0,使总位数为偶数;最后一次循环有机会处理T=1,n的奇偶及循环结束时T=1的处理,最后一次循环的处理:n为奇数时判断并处理的是00T,不移位;n为偶数时判断并处理的是0bn-2T,右移1位,71,*原码二位乘法运算的控制流程:与一位乘法算法类似 初始化计数器C=n/2、RP=0、T=0、乘数绝对值前补0;,循环体Pi=Pi-1+|A|(b2i-1b2i-2+T)2-2,判断b2ib2i-1T,决定加法所加的数,算术右移2位(C=1、n为偶数时右移1位,C=1、n为奇数时不右移),例6设A=+0.111、B=+0.101,用原码二位乘求AB原,解:|A|补=0
41、00.111,AB原=0.100011,72,例7设A=+0.1111、B=+0.1101,用原码二位乘求AB原,解:|A|补=000.1111,-|A|补=111.0001,故AB原=0.11000011,会为负吗?,73,3、补码定点乘法运算*目标:符号与数值一起运算,(1)补码一位乘法运算*种类:校正法、比较法,*校正法补码一位乘法运算规则:设B补=bn-1bn-2b0,当B0时,B补=B,A补=2n+A(mod 2n)A补B补=(2nA)B=2nBAB=AB(mod 2n),则 AB补=A补B补=A补0bn-2b0,当B0时,B=B补-2n=1bn-2b0-2n=0bn-2b0-2n-
42、1,AB补=A0bn-2b0补+-A2n-1补=A补0bn-2b0+-A补2n-1,运算规则与符号有关!通常不使用校正法,74,*比较法补码一位乘法运算规则:又称Booth算法,设B补=bn-1bn-2b0,则B0时bn-1=0、B0时bn-1=1 校正法的统一公式 AB补=A补0bn-2b0+-A补bn-12n-1,根据补码定义及同余公式,可证明-A补=-A补成立,比较法运算公式 由校正法推导而来 AB补=A补0bn-2b0-A补bn-12n-1=A补-bn-12n-1+bn-22n-2+b0,=A补-bn-12n-1+bn-22n-1-bn-22n-2+b021-b020=A补(bn-2-
43、bn-1)2n-1+(bn-3-bn-2)2n-2+(0-b0)20,=A补2n-1(bn-2-bn-1)+(bn-3-bn-2)2-1+(0-b0)2-(n-1)=A补2n-1(bn-2-bn-1)+(bn-3-bn-2)+(b0-b1)+0+(0-b0)2-12-12-1,75,迭代公式设B补=bn-1bn-2b0,b-1称为附加位、b-1=0 P0补=0 P1补=P0补+(b-1-b0)A补2-1 Pn-1补=Pn-2补+(bn-3-bn-2)A补2-1 Pn补=Pn-1补+(bn-2-bn-1)A补,最后一次不移位!,若为纯整数乘法,AB补=Pn2n-1 2n-1位 若为纯小数乘法,A
44、B补=Pn20 2n-1位,第i轮的判断-加法-移位方法:,76,解:-A补=10101,循环5次(判断-加法-移位、移位仅4次),例8A补=01011,B补=10011,用Booth算法求AB补,77,实现思路 采用n位补码加法;右移为算术右移,*补码一位乘法运算所需硬件配置:设A补和B补为n位补码表示,则AB补为2n位补码表示,部分积低位放在乘数空出的位置中 部分积、乘数及附加位同时算术右移,所需硬件配置 REGA、REGB、REGP均为n位REG;计数器C初始值为n;控制门受REGB最低位及附加位控制 输出0或(REGA)或(REGA)取反后的值,78,*补码一位乘法运算控制流程:循环的
45、判断-加法-移位,思考n位加法会产生溢出吗?,79,*不同数据类型的乘积位数扩展:保持数学上的值不变,定点纯小数0REGB0;,定点纯整数再算术右移1次,*基于补码一位乘法硬件的无符号数乘法:只需对运算控制流程做一些特殊处理,每次只判断REGB0,决定是加0或加(REGA);算术右移改为带Cn-1的逻辑右移;循环n次,移位n次。,80,四、定点除法运算,1、笔纸除法运算分析,例1设A=+0.101、B=-0.110,C=+101001、D=+110,笔纸除法过程如下:0.110 110 0.1100.1010 110101001 0.0110 110 0.01000 1000 0.00110
46、110 0.000100 101 结果:商=-0.110 商=+110 余数=+0.000100 余数=+101,*除法运算应用:纯整数除法关心余数(取模),纯小数除法不关心余数(与近似值相关)。,81,*机器定点除法对被除数、商、余数的要求:商、余数数据表示及长度与除数相同,余数与被除数同符号;,*机器定点除法的实现思路:,被除数,82,2、原码定点除法运算,(1)恢复余数法*思想:位商qi为0时恢复余数(即+|除数|),例2A原=1.1011,B原=0.1101,用恢复余数法求A/B原,循环n-1次,求得q1qn-1及Rn-1 上商第i轮Ri=Ri-1左移1位-|B|,Ri0时qi=1;求
47、余qi=1时Ri=Ri,qi=0时Ri=Ri+|B|,*运算规则:设商原=q0.q1qn-1,第i轮循环余数为Ri 判溢出R0=|A|-|B|,R00时溢出,否则R0=|A|;求商符SQ=A符号 B的符号;,解:SQ=1 0=1,|B|补=0.1101,-|B|补=1.0011,得|商|=0.1101,|余数|=0.0111;除法结果 A/B原=1.1101,A%B原=1.0111,83,84,(2)不恢复余数法(又称加减交替法)*思想:优化恢复余数法的性能,即qi=0时下轮补加除数,*运算规则变化:求余若qi=0时Ri+1=2Ri+|B|,否则Ri+1=2Ri-|B|,若qn-1=0(即Rn
48、-10)时,则Rn-1=Rn-1+|B|;上商基本不变,即Ri+10时qi+11,否则qi+10;移位不变,即部分余数与商同时左移。,*效果:平均执行加法次数从1.5(n-1)(n-1)+0.5次,*优化思路:设Ri-1、Ri、Ri+1为恢复余数法的三轮余数,Ri、Ri+1为恢复前的余数,则 Ri=2Ri-1-|B|,若Ri0,则qi=1,Ri=Ri,Ri+1=2Ri-|B|=2Ri-|B|否则qi=0,Ri=Ri+|B|,Ri+1=2Ri-|B|=2Ri+|B|,85,例3A原=1.1011,B原=0.1101,不恢复余数法求A/B原,解:SQ=1 0=1,|B|补=0.1101,-|B|补
49、=1.0011,86,*不恢复余数原码除法所需硬件配置:REGA、REGB、REGQ均为n位REG,REGA存放余数;计数器C初始设置为n-1;控制门受REGQ最低位控制。输出(REGB)或(REGB)取反后的值,87,*不恢复余数原码除法运算控制流程:,88,89,3、补码定点除法运算*思想:与原码除法一致,但用补码表示商及余数。,*不恢复余数法的运算规则:设A补为被除数、B补为除数,Q补=q0.q1qn-1为商,Ri补为第i轮余数(可能与A补异号),Rn-1补为最终余数(与A补同号);,商符的确定商的符号与数值部分一起运算形成,按反码规则上商,商为正数时,够减时上商为1商为负数时,不够减时
50、上商为1,90,部分商的确定按反码规则上商,新余数的确定上轮够减时-|B|,否则+|B|,最终余数的修正不够减时修正(+|B|),不恢复余数法,91,例4A补=1.0101,B补=0.1101,不恢复余数求A/B补,92,*不恢复余数补码除法运算控制流程:,*不恢复余数补码除法所需硬件配置:与原码除法基本相同(不需要SQ及SR),93,纯小数除法时常恒置1,94,浮点数的数据表示回顾:F=SMM2E,数据存储方式通常采用规格化数方式存储 规格化数 0.5|M|1,2.5 浮点数的运算,表示格式定点纯小数M+定点整数E,编码方式M常采用原码或补码,E常采用移码,数码长度有几种长度,如单精度和双精