计算机组成与结构-第三章讲义ppt课件_第1页
计算机组成与结构-第三章讲义ppt课件_第2页
计算机组成与结构-第三章讲义ppt课件_第3页
计算机组成与结构-第三章讲义ppt课件_第4页
计算机组成与结构-第三章讲义ppt课件_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机组成与结构,主讲人:张婷 wz_,第3章 运算方法和运算部件,3.1 数据的表示方法和转换 3.2 带符号的二进制数据在计算机中的表示方 法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点数的运算方法 3.6 运算部件 3.7 数据校验码,3.1.1 数值型数据的表示和转换,1. 数制 任意一个十进制数(N)10可表示如下: (N)10= Dm10m + Dm-110m-1 + + D1101 + D0100 + D-110-1 + D-210-2 + + D-k10-k = Di 10i,3.1.1 数值型数据的表示和转换,二进制数(N)2按公式展开得该数的十

2、进制表示。 例3.1: (1101.0101)2=(123+122+021+120+02- 1+12-2+02- 3+12-4)10=(8+4+0+1+0+0.25+0+0.0625)10 =(13.312 5)10,3.1.1 数值型数据的表示和转换,例3.2: (15.24)8=(181+580+28-1+48-2)10 =(8+5+0.25+0.0625)10=(13.312 5)10 例3.3: (0D.5)=(0161+13160+516-1)10=(0+13+0.3125)10 =(13.312 5)10,表3.1 二、八、十六和十进制数的对应关系,3.1.1 数值型数据的表示和转

3、换,2. 不同数制间的数据转换 (1) 二、八、十六进制数之间的转换 规则:3位二进制数组成1位八进制数,4位二进制数组成1位十六进制数。对于一个兼有整数和小数部分的数,以小数点为界,对小数点前后的数分别分组进行处理,不足的位数用0补足,对整数部分将0补在数的左侧,对小数部分将0补在数的右侧。,3.1.1 数值型数据的表示和转换,例3.4:1 101.010 1)2=(001 101.010 100)2=(15.24)8 例3.5:(1 1101.0101)2=(0001 1101.0101)2=(1D.5)16 例3.6:(15.24)8=(001 101.010 100)2=(1101.0

4、101)2 (2) 二进制数转换成十进制数 :,3.1.1 数值型数据的表示和转换,(2) 十进制数转换成二进制数 对一个数的整数部分和小数部分分别进行处理,各自得出结果后再合并。 整数部分:除2取余数法。 小数部分:乘2取整数法。,3.1.1 数值型数据的表示和转换,例3.7 :将(105)10转换成二进制。 2 105 余数 结果 2 52 1 最低位 2 26 0 2 13 0 2 6 1 2 3 0 2 1 1 0 1 最高位 得出:(105)10=(1101001)2,3.1.1 数值型数据的表示和转换,例3.8:将(0.312 5)10和(0.312 8)10转换成二进制数(要求4

5、位有效位)。, 结果 0.31252 最高位 0 .62502 1 .25002 0 .50002 最低位 1 .0000 得出:(0.3125)10=(0.0101)2, 结果 0.31282 最高位 0 .62562 1 .25122 0 .50242 最低位 1 .0048 得出:(0.3128)10=(0.0101)2,3.1.1 数值型数据的表示和转换,例3.9:将(13.312 5)10转换成八进制数,处理过程如下:,整数部分转换 8 13 余数 8 1 5 0 1 (13)10=(15)8,小数部分转换 0.31258 2 .50008 4 .0000 (0.312 5)10=(

6、0.24)8,得出: (13.3125)10=(15.24)8,3.1.1 数值型数据的表示和转换,3. 数据符号的表示 真值:正(+)负(-)号后跟绝对值表示。 正负号数字化:“+”0;“-”1,其中“+”可省略。 例如:(01001)2或(1001)2表示(+9)10 (11001)2表示 (-9)10,3.1.2 十进制数的编码与运算,1. 十进制数位的编码与运算 (1) 有权码 表示十进制数的二进制码的每一位都有确定的权。 8421码:四个二进制码的权从高到低为8、4、2和1, 用0000,0001,1001分别表示09。,修正规则:如果两个一位BCD码相加之和小于或等于 (1001)

7、2,即(9)10,不需要修正;如相加之和大于或等于(10)10 要进行加6修正,并向高位进位,进位可以在首次相加或修正时产生。,3.1.2 十进制数的编码与运算,例3.10:,3.1.2 十进制数的编码与运算,另外几种有权码,如2421,5211,4311码(见 表3.2),也是用4位二进制码表示一个十进制数 位,但4位二进制码之间不符合二进制规则。这几 种有权码有一特点,即任何两个相加之和等于(9)10 的二进制码互为反码。例如,在2421码中, 0(0000)与9(1111)、1(0001)与8(1110)、, 互为反码。,表3.2 4位有权码,3.1.2 十进制数的编码与运算,(2) 无

8、权码 表示一个十进制数位的二进制码的每一位没有确定的权。 余3码:在8421码基础上,把每个编码都加上0011。 运算规则:当两个余3码相加不产生进位时,应从结果中减去0011;产生进位时,应将进位信号送入高位,本位加0011。 格雷码:任何两个相邻编码只有一个二进制位不同,而其余三个二进制位相同。,3.1.2 十进制数的编码与运算,例3.11:(28)10+(55)10=(83)10,表3.3 4位无权码,3.1.2 十进制数的编码与运算,2. 数字串在计算机内的表示与存储 (1) 字符形式 即一个字节存放一个十进制数位或符号位,存放的是09十个数字和正负号的ASCII编码值 。 (2) 压

9、缩的十进制数形式。 用一个字节存放两个十进制数位,既节省了存储空 间,又便于完成十进制数的算术运算。其值用BCD码 或ASCII码的低4位表示。符号位也占半个字节并放在 最低数字位之后,其值可从4位二进制码中的6种冗余 状态中选用。,3.2.1 原码、补码、反码及其加减法运算,在计算机中表示的带符号的二进制数称为“机器数”。机器数有三种表示方式:原码、补码和反码。 为讨论方便,先假设机器数为小数,符号位放在最左面,小数点置于符号位与数值之间。数的真值用X表示。,3.2.1 原码、补码、反码及其加减法运算,1. 原码表示法 机器数的最高位为符号位,0表示正数,1表示负 数,数值跟随其后,并以绝对

10、值形式给出。这是与 真值最接近的一种表示形式。 原码的定义: X原= X0X1 1-X=1+|X| -1X0 (3.5) 即: X原=符号位+X,3.2.1 原码、补码、反码及其加减法运算,例3.12: X=+0.1011,X原=01011 X=-0.1011,X原=11011 根据定义,当X=-0.1011时, X原=1-(-0.1011)=1.1011,3.2.1 原码、补码、反码及其加减法运算,说明:数的原码与真值之间的换算比较简单,与 十进制运算规则类似,当运算结果不超出机器能表 示的范围时,运算结果仍以原码表示。其缺点是: 在机器中进行加减法运算时比较复杂。,3.2.1 原码、补码、

11、反码及其加减法运算,2. 补码表示法 补码的定义: X补= X0X1 2+X=2-|X|-1X0 (3.6) 即X补=2符号位+X(mod 2),补码的特点: (1) 正数:补码和原码的形式相同。 (2) 负数:补码则是将它的原码除符号位以外逐位取反,最后在末位加1。 (3)数值零的补码表示形式是唯一的,即: +0补=-0补=0.0000,3.2.1 原码、补码、反码及其加减法运算,例3.13 : X=+0.1011, 则X补=0.1011 X=-0.1011,则X补=2+X=2+(-0.1011)=1.0101 补码运算重要结论: (1) 用补码表示的两数进行加法运算,其结果仍为补码。 (2

12、) X+Y补=X补+Y补。 (3) X-Y补=X + ( -Y )补= X补+-Y补 (4) 符号位与数值位一样参与运算。,3.2.1 原码、补码、反码及其加减法运算,例3.14:设X=0.1010,Y=0.0101,两数均为正数: X+Y补=0.1010+0.0101补=0.1111补=0.1111 X补+Y补=0.1010+0.0101=0.1111 即 X+Y补=X补+Y补=0.1111 例3.15:设X=0.1010, Y=-0.0101, X为正, Y为负: X+Y补=0.1010+(-0.0101)补=0.0101 X补+Y补=0.1010+-0.0101补=0.1010+(2-

13、0.0101)=2+0.0101=0.0101mod 2 即X+Y补=X补+Y补=0.0101,3.2.1 原码、补码、反码及其加减法运算,例3.16:设X=-0.1010,Y=0.0101,X为负,Y为正: X+Y补=-0.1010+0.0101补=-0.0101补=1.1011 X补+Y补=-0.1010补+0.0101补 =1.0110+0.0101=1.1011 即X+Y补=X补+Y补=1.1011 例3.17:设X=-0.1010,Y=-0.0101,X,Y均为负数: X+Y补=-0.1010+(-0.0101)补=-0.1111补=1.0001 X补+Y补=1.0110+1.101

14、1=10+1.0001=1.0001 mod 2 即:X+Y补=X补+Y补=1.0001,3.2.1 原码、补码、反码及其加减法运算,例3.18 设X=-0.0000, Y=-0.0000 X补+Y补=X+Y补=(2+0.0000)+(2+0.0000)=4+0.0000=0.0000 mod 2 例3.19 设X=-0.1011, Y=-0.0101,则有 X+Y补=X补+Y补 =1.0101+1.1011=11.0000=1.0000 mod 2,3.2.1 原码、补码、反码及其加减法运算,图3.1 实现加法运算的逻辑示例,3.2.1 原码、补码、反码及其加减法运算,3. 反码表示法 反码

15、的定义: X反 = X0X1 2-2-n+X-1X0 (3.7) 即:X反=(2-2-n)符号位+X mod(2-2-n),反码的特点: (1) 正数:反码和原码的形式相同。 (2) 负数:保持其原码的符号位不变,将数值部分取反。 (3) 反码运算在最高位有进位时,丢掉进位要在最低位+1。 (4) 反码零有两种表示形式: +0反=0.0000 -0反=1.1111,3.2.1 原码、补码、反码及其加减法运算,例3.20 : X=+0.1011(n=4),则X反=0.1011 X=-0.1011(n=4),则X反=2-2-4+(-0.1011)=1.0100 例3.21 :X=0.1011, Y

16、=-0.0100,则有: X反=0.1011, Y反=1.1011 X+Y反=X反+Y反=0.1011+1.1011反 =10.0110 即: X+Y反=0.0111 mod(2-2-4) 例3.22:X=0.1011, Y=-0.1100,则有: X反=0.1011,Y反=1.0011 X+Y反=0.1011+1.0011反=1.1110(其真值为-0.0001),3.2.1 原码、补码、反码及其加减法运算,4. 补码和反码转换成原码 (1)反码转换成原码 方法:符号位保持不变,正数的数值部分不变,负数的数值部分取反。 例3.23:设X反=0.1010,则X原=0.1010,真值 X=0.1

17、010。 例3.24:设X反=1.1010,则X原=1.0101,真值X=-0.0101。 (2)补码转换成原码 方法:符号位保持不变,正数的数值部分不变,负数的数值部分末位减1,再逐位取反。 例3.25:设X补=0.1010,则X原=0.1010,真值X=0.1010。 例3.26:设X补=1.1010,则X原=1.0110,真值X=-0.0110。,3.2.1 原码、补码、反码及其加减法运算,5. 整数的表示形式 设X=XnX2X1X0,其中Xn为符号位。 (1) 原码 X原 = X0X2n 2n-X=2n+|X|-2nX0 (3.8) (2) 补码 X补 = X0X2n 2n+1+X=2

18、n+1-|X|-2nX0 (3.9) (3) 反码 X反 = X0X2n (2n+1-1)+X-2nX0 (3.10),原码表示法,带符号的绝对值表示,(1) 定义,整数,x 为真值,n 为整数的位数,如,x = +1110,x原 = 0 , 1110,x原 = 24 + 1110 = 1 , 1110,用 逗号 将符号位 和数值部分隔开,小数,x 为真值,如,x = + 0.1101,x原 = 0 . 1101,x = + 0.1000000,x原 = 0 . 1000000,用 小数点 将符号 位和数值部分隔开,用 小数点 将符号 位和数值部分隔开,补码定义,整数,x 为真值,n 为整数的

19、位数,如,x = +1010,=,x补 = 0,1010,1,0101000,用 逗号 将符号位 和数值部分隔开,1011000,100000000,小数,x 为真值,x = + 0.1110,如,x补 = 0.1110,1.0100000,=,求补码的快捷方式,= 100000,= 1,0110,10101 + 1,= 1,0110,又x原 = 1,1010,+ 1,举例,解:,x = + 0.0001,解:由定义得,x = x补 2,= 1.0001 10.0000,x原 = 1.1111,由定义得,例3:,解:,x = x补 24+1,= 1,1110 100000,x原 = 1,001

20、0,由定义得,反码表示法,(1) 定义,整数,如,x = +1101,x反 = 0,1101,= 1,0010,x 为真值,n 为整数的位数,小数,x = + 0.1101,x反 = 0.1101,= 1.0101,如,x 为真值,n 为小数的位数,举例,例6: 求 0 的反码,设 x = + 0.0000,+0.0000反= 0.0000,解:,同理,对于整数,+0反= 0,0000,例5: 已知 x反 = 1,1110 求 x,例4: 已知 x反 = 0,1110 求 x,解:,由定义得 x = + 1110,解:,三种机器数的小结,对于正数,原码 = 补码 = 反码,-0,-1,-128

21、,-127,-127,-126,-3,-2,-1,设机器数字长为 8 位(其中位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?,3.2.2 加减法运算的溢出处理,溢出:运算结果超出机器数所能表示的范围。 溢出的可能性:两个同号数相加或者两个异号数相减。 例3.28:以4位二进制补码整数加法运算为例说明如下 9+5=14 (-9)+(-5)= -14 12+7=19 (溢出) 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 + 0 0 1 0 1 + 1 1 0 1 1 +) 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 0 1

22、0 0 1 1,3.2.2 加减法运算的溢出处理, (-12)+(-7)=-19(溢出) 14-1=13 -14+1= -13 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 + 1 1 1 1 1 +) 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 设fA,fB表示两操作数(A、B)的符号位,fS为结果的符号位。 符号位fA、fB直接参与运算,它所产生的进位以Cf表示。 C 表示数值最高位产生的进位。判别溢出的几种方法如下:,3.2.2 加减法运算的溢出处理,(1) 当符号相同的两数相加时,如果结果的符号与加 数(或被

23、加数)不相同,则为溢出,即: 溢出条件=fAfBfS+fAfBfS 此种情况判溢出的逻辑电路如图3.2所示:,3.2.2 加减法运算的溢出处理,(2) 当任意符号两数相加时,如果C=Cf,运算结果正确, 其中C为数值最高位的进位,Cf为符号位的进位。如果 CCf,则为溢出,即: 溢出条件=C Cf,3.2.2 加减法运算的溢出处理,(3) 采用双符号位fS2fS1。正数的双符号位为00,负数 的双符号位为11。符号位参与运算,当结果的两个符号 位fS1和fS2不相同时,为溢出,即: 溢出条件=fS1 fS2,或者 溢出条件=fS1fS2+fS1fS2,3.2.2 加减法运算的溢出处理,例3.2

24、9: 9+5=14 12+7=19 0 0 1 0 0 1 0 0 1 1 0 0 + 0 0 0 1 0 1 + 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 1 1 C=Cf=0 不溢出, C=1,Cf=0溢出, 或fS1=fS2 不溢出 或fS1fS2溢出,3.2.3 定点数和浮点数,1. 定点数 定点小数:小数点固定在数据数值部分的左边。 定点整数:小数点固定在数据数值部分的右边。 2. 浮点数 小数点位置可浮动的数据,通常以下式表示: N = M RE MS E M 1位 n+1位 m位,3.2.3 定点数和浮点数,浮点数的规格化 浮点数规格化形式:R=2,尾数最高

25、位为1。,R= 2,左规 尾数左移 1 位,阶码减 1,右规 尾数右移 1 位,阶码加 1,例如:设M=0.0011,R=2,E=0100,规格化:尾数左移2位为 0.1100 阶码减(10)2,规格化后:M=0.1100 R=2 E=0010,当一个浮点数的尾数为0(不论阶码是何值),或阶码的值比能在机器中表示的最小值还小时,计算机都把该浮点数看成零值,称为机器零。 根据IEEE 754国际标准,常用的浮点数有两种格式: (1) 单精度浮点数(32位),阶码8位,尾数24位(内含1位符号位)。 (2) 双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。,3.2.3 定点数和浮

26、点数,浮点数的尾数用补码表示,阶码用补码或移码表示。,移码表示法,补码表示很难直接判断其真值大小,如,十进制,x + 25,+10101 + 100000,+11111 + 100000,错,错,正确,正确,0,10101,1,01011,0,11111,1,00001,+10101, 10101,+11111, 11111,= 110101,= 001011,= 111111,= 000001,二进制,补码,(1) 移码定义,x 为真值,n 为 整数的位数,移码在数轴上的表示,如,x = 10100,x移 = 25 + 10100,用 逗号 将符号位 和数值部分隔开,x = 10100,x移

27、 = 25 10100,= 1,10100,= 0,01100,(2) 移码和补码的比较,设 x = +1100100,x移 = 27 + 1100100,x补 = 0,1100100,设 x = 1100100,x移 = 27 1100100,x补 = 1,0011100,补码与移码只差一个符号位,= 1,1100100,= 0,0011100,1,0,0,1,3.2.3 定点数和浮点数,移码的定义 设由1位符号位和n位数值位组成的阶码,则: X移=2n+X -2nX2n (3.11) 当0X2n时, X移=2n+X=2n +X补(3.12) 当-2nX0时,X移=2n+X=(2n+1+X)

28、-2n =X补-2n (3.13) 由此可知,补码的符号位取反即得移码。,3.2.3 定点数和浮点数,例3.30:X=+1011 X补=01011 X移=11011 X=-1011 X补=10101 X移=00101,移码的特点: (1) 最高位为符号位,1表示正号,0表示负号。 (2) 移码(阶码)只执行加减法运算,且需要对得到的结果加以 修正,修正量为2n,即要对结果的符号位取反,得到X移。 (3) 数据零在移码中的表示是唯一的,即+0移=-0移 =10000。,3.2.3 定点数和浮点数,3. 计算机中数据的数值范围和精度 (1) 定点数表示范围,3.2.3 定点数和浮点数,(2) 浮点

29、数表示范围,上溢 阶码 最大阶码 下溢 阶码 最小阶码 按 机器零 处理,3.2.3 定点数和浮点数,例如:,设 m = 4,n = 10,r = 2,尾数规格化后的浮点数表示范围,3.2.3 定点数和浮点数,(3) 定点数和浮点数的比较 当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数大得多。 当浮点数为规格化数时,其相对精度远比定点数高。 浮点数运算要分阶码部分和尾数部分,而且运算结果要求规格化。 溢出的判断上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。,3.2.3 定点数和浮点数,二进制形式,定点表示,浮点规格化形式,定点机中,浮点机中,x = 0.001

30、0011,x = 0.10011000002-10,x原 = x补 = x反 = 0.0010011000,x原 = 1, 0010; 0. 1001100000,x补 = 1, 1110; 0. 1001100000,x反 = 1, 1101; 0. 1001100000,解:,3.2.3 定点数和浮点数,例6.14:将 58 表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。,设 x = 58,二进制形式,定点表示,浮点规格化形式,x = 111010,x = (0.1110100000) 2110,x原 = 1, 0000

31、111010,x补 = 1, 1111000110,x反 = 1, 1111000101,定点机中,x原 = 0, 0110; 1. 1110100000,x补 = 0, 0110; 1. 0001100000,x反 = 0, 0110; 1. 0001011111,浮点机中,x阶移、尾补 = 1, 0110; 1. 0001100000,解:,例:写出对应下图所示的浮点数的补码形式。 设 n = 10,m = 4, 阶符、数符各取 1位。,最大正数,最小正数,最大负数,最小负数,215(1 210),215 210,215 210,215(1 210),0,1111; 0.111111111

32、1,1,0001; 0.0000000001,1,0001; 1.1111111111,0,1111; 1.0000000001,解:,真值,补码,3.3 二进制乘法运算,1. 定点原码一位乘法 例3.31:,X= 0.1101,Y=0.1011,求X*Y。,3.3 二进制乘法运算,笔算乘法改进,改进后的笔算乘法过程(竖式),0 . 1 1 0 1,0 . 1 1 0 1,0 . 0 0 0 0,0 . 1 1 0 1,乘数为 1,加被乘数,乘数为 0,加 0,乘数为 1,加 被乘数,3.3 二进制乘法运算,图3.5 实现原码一位乘法的逻辑电路框图,3.3 二进制乘法运算,在计算机内实现原码乘

33、法的逻辑框图如图3.5所示。其中三个寄存器A,B,C分别存放部分积、被乘数和乘数。 (1) 一次加法操作只能求出两数之和,因此每求得一个相加数,就与上次部分积相加。 (2) 在求本次部分积时,前一次部分积的最低位不再参与运算,将其右移一位,相加数可直送而不必偏移,用N位加法器就可实现两个N数相乘。 (3) 部分积右移时,乘数寄存器同时右移一位,这样用乘数寄存器的最低位来控制相加数(取被乘数或零),同时乘数寄存器的最高位可接收部分积右移出来的一位。完成乘法运算后,A寄存器中保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。,3.3 二进制乘法运算,定点原码一位乘法运算规则 假设: X原=X0X

34、1X2Xn X0为符号 Y原=Y0Y1Y2Yn Y0为符号 则: XY原=X原Y原 =(X0Y0)(X1X2Xn) (1Y2Yn),运算规则: 参加运算的操作数取其绝对值; 令乘数的最低位为判断位,若为“1”,加被乘数,若为“0”,加0; 累加后的部分积以及乘数右移一位; 重复(2)和(3)n次; 符号位单独处理,同号为正,异号为负。,3.3 二进制乘法运算,例3.32:设X=0.1101,Y=0.1011,求XY。 XY=0.10001111 乘积的符号位=X0Y0=00=0,乘积为正数。 补充例:设X=-0.1110,Y= -0.1101,求XY原。 (1) 计算符号位Z0=X0 Y0=1

35、 1=0。 (2) 两数绝对值的原码为: |X|原=0.1110, |Y|原=0.1101 练习:设X=0.1101,Y= -0.0111,求Z=X*Y。,3.3 二进制乘法运算,乘法开始时,A寄存器被清为零,作为初始部分积。被乘 数放在B寄存器中,乘数放在C寄存器中。实现部分积和被 乘数相加是通过给出AALU和BALU命令,在ALU中完 成的。ALU的输出经过移位电路向右移一位送入A寄存器中。 C寄存器是用移位寄存器实现的,其最低位用作BALU的 控制命令。加法器最低一位的值,右移时将移入C寄存器的 最高数值位,使相乘之积的低位部分保存进C寄存器中,原 来的乘数在逐位右移过程中丢失了。,3.

36、3 二进制乘法运算,图3.5上还给出了一个计数器Cd,用来控制逐位相乘的次数。它的初值经常放乘数位数的补码值,以后每完成一位乘计算就使其计数一次,待计数到0时,给出结束乘运算的控制信号。 图3.5上未画出求结果的符号的电路。 乘法运算的控制流程图如图3.6所示。该图中,数据的位序号从左至右按0,1,n的次序编,0位表示符号,共n位数值。 从流程图上可以清楚地看到,这里的原码一位乘是通过循环迭代的办法实现的。每次迭代得到的部分积(P0,P1,,Pn)可用下述式(3.14)表示:,图3.6 乘法运算的控制流程,P0=0 P1=(P0+XYn)2-1 P2=(P1+XYn-1)2-1 (3.14)

37、Pi+1=(Pi+XYn-i)2-1 Pn=(Pn-1+XY1)2-1,移位运算,1. 移位的意义,15 m = 1500 cm,小数点右移 2 位,机器用语,左移 绝对值扩大,右移 绝对值缩小,在计算机中,移位与加减配合,能够实现乘除运算,2. 算术移位规则,1,右移 添 1,左移 添 0,0,反 码,补 码,原 码,负数,0,原码、补码、反码,正数,符号位不变,例6.16,设机器数字长为 8 位(含位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。,解:,A = +26,则 A原 = A补 = A反 = 0,0011010,+ 6

38、,0,0000110,+13,0,0001101,+104,0,1101000,+ 52,0,0110100,+26,0,0011010,移位前,= +11010,左移一位,左移两位,右移一位,右移两位,例6.17,设机器数字长为 8 位(含位符号位),写出 A = 26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。,解:,A = 26, 6,1,0000110, 13,1,0001101, 104,1,1101000, 52,1,0110100, 26,1,0011010,移位前,原码,= 11010,左移一位,左移两位,右移一位,右移两位, 6,1,1111

39、001, 13,1,1110010, 104,1,0010111, 52,1,1001011, 26,1,1100101,移位前, 7,1,1111001, 13,1,1110011, 104,1,0011000, 52,1,1001100, 26,1,1100110,移位前,补码,反码,左移一位,左移两位,右移一位,右移两位,左移一位,左移两位,右移一位,右移两位,3. 算术移位和逻辑移位的区别,算术移位,有符号数的移位,逻辑移位,无符号数的移位,逻辑左移,逻辑右移,低位添 0,高位移丢,高位添 0,低位移丢,例如 01010011,逻辑左移,10100110,逻辑右移,01011001,算

40、术左移,算术右移,00100110,11011001(补码),高位 1 移丢,10110010,3.3 二进制乘法运算,2. 定点补码一位乘法 (1) 补码与真值的转换关系 设X补=X0.X1X2Xn, X=-X0+ Xi2-i=-X0+0.X1X2Xn (2) 补码的右移 在补码运算的机器中,不论数的正负,连同符号位将数右移 一位,并保持符号位不变,相当于乘1/2(或除2)。 (3) 补码一位乘法 设被乘数X补=X0.X1X2Xn,乘数Y补=Y0.Y1Y2Yn,则有: XY补=X补(-Y0+ Yi2-i)(3.16),3.3 二进制乘法运算,例3.33:设X=-0.1101,Y=0.1011

41、 即:X补=11.0011,Y补=Y=0.1011,求XY补。 例3.34:设X=-0.1101,Y=-0.1011 即:X补=11.0011,Y补=11.0101,求XY补。 练习: (1) 已知X补=1.0101, Y补=0.1101,求XY补。 (2) 已知X补=0.1101, Y补=1.0101,求XY补。,3.3 二进制乘法运算,布斯公式 XY补=X补(-Y0+ Yi2-i) =X补-Y0+Y12-1+Y22-2+Yn2-n =X补-Y0+(Y1-Y12-1)+(Y22-1-Y22-2)+ +(Yn2-(n-1)-Yn2-n) =X补(Y1-Y0)+(Y2-Y1)2-1+ +(Yn-Yn-1)2-(n-1) +(0-Yn)2-n =X补 (Yi+1-Yi)2-I 乘数的最低1位为Yn,在其后面再添加1位Yn+1,其值为0。 ,3.3 二进制乘法运算,上式变换后得每一步的部分积: P0补=0 P1补=P0补+(Yn+1-Yn)X补2-1 Yn+1=0 P2补=P1补+(Yn-Yn-1)X补2-1 Pi补=Pi-1补+(Yn-i+2-Yn-i+1)X补2-1 Pn补=Pn-1补+(Y2-Y1)X补2-

温馨提示

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

评论

0/150

提交评论