《计算机组成结构-lecture09》由会员分享,可在线阅读,更多相关《计算机组成结构-lecture09(29页珍藏版)》请在金锄头文库上搜索。
1、计算机组成结构教师:傅均班级:计科1001/10026.3 定 点 运 算一、移位运算1. 移位的意义15 m = 1500 cm 小数点右移 2 位机器用语15 相对于小数点 左移 2 位( 小数点不动 )左移 绝对值扩大右移 绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算2. 算术移位规则1右移 添 1左移 添 00反 码补 码原 码负数0原码、补码、反码正数符号位不变6.36.3添补代码码 制真值例6.16 设机器数字长为 8 位(含位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表 示形式及对应的真值,并分析结果的正确性。 解:A = +26 则 A原 =
2、A补 = A反 = 0,0011010+ 60,0000110+130,0001101+1040,1101000+ 520,0110100+260,0011010移位前A原=A补=A反对应的真值机 器 数移位操作= +11010 6.36.3左移一位 左移两位右移一位 右移两位例6.17设机器数字长为 8 位(含位符号位),写出 A = 26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A = 26 61,0000110 131,0001101 1041,1101000 521,0110100 261,0011010移位前对应的真值机 器 数移位操作原码=
3、11010 6.36.3左移一位 左移两位右移一位右移两位 61,1111001 131,1110010 1041,0010111 521,1001011 261,1100101移位前对应的真值机 器 数移位操作 71,1111001 131,1110011 1041,0011000 521,1001100 261,1100110移位前对应的真值机 器 数移位操作补码反码6.36.3左移一位左移两位右移一位 右移两位左移一位左移两位 右移一位右移两位3. 算术移位的硬件实现(a)真值为正 (b)负数的原码(c)负数的补码(d)负数的反码00010丢 1丢 1出错影响精度出错影响精度正确影响精度
4、正确正确6.36.34. 算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添 0,高位移丢高位添 0,低位移丢例如 01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)高位 1 移丢01 0 1 0 0 1 1 0Cy0 1 0 1 0 0 1 100 101100106.36.3二、加减法运算1. 补码加减运算公式(1) 加法 (2) 减法 整数 A补 + B补= A+B补(mod 2n+1)小数 A补 + B补= A+B补(mod 2)AB = A+(B )整数 A B补= A+(B
5、 )补= A补 + B补(mod 2n+1)小数 A B补= A+(B )补(mod 2)连同符号位一起相加,符号位产生的进位自然丢掉= A补 + B补6.36.32. 举例解:A补 B补 A补 + B补+= 0 . 1 0 1 1 = 1 . 1 0 1 1 = 1 0 . 0 1 1 0 = A + B补验证例 6.18设 A = 0.1011,B = 0.0101 求 A + B补0.1011 0.0101 0.0110 A + B = 0 . 0 1 1 0A补 B补 A补 + B补+= 1 , 0 1 1 1 = 1 , 1 0 1 1 = 1 1 , 0 0 1 0= A + B补
6、验证 1001 1110 0101+例 6.19设 A = 9,B = 5 求 A+B补 解: A + B = 11106.36.3例 6.20设机器数字长为 8 位(含 1 位符号位) 且 A = 15, B = 24,用补码求 A B 解:A = 15 = 0001111 B = 24 = 0011000A补 + B补+A补= 0, 0001111 B补= 1, 1101000 = 1, 1110111 = A B补B补 = 0, 0011000练习 1设 x = y = ,用补码求 x+y9 1611 16 x + y = 0.1100 =12 16练习 2 设机器数字长为 8 位(含
7、1 位符号位)且 A = 97,B = +41,用补码求 A B A B = + 1110110 = + 118 A B = 1001 = 9错错6.36.33. 溢出判断(1) 一位符号位判溢出参加操作的 两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出硬件实现最高有效位的进位 符号位的进位 = 1如1 0 = 1 0 1 = 1有 溢出0 0 = 0 1 1 = 0无 溢出6.36.3溢出(2) 两位符号位判溢出x补 =x 1 x 04 + x 0 x 1(mod 4)x补 + y补 = x + y 补 (mod 4)x y补 = x补 +
8、 y补 (mod 4)结果的双符号位 相同 未溢出结果的双符号位 不同 溢出最高符号位 代表其 真正的符号00. 11. 10. 01. 00, 11, 10, 01, 6.36.34. 补码加减法的硬件配置V0 A nGAGS加法器(n+1)溢出 判断求补控制 逻 辑0 X nA、X 均 n+1 位用减法标记 GS 控制求补逻辑6.36.3三、乘法运算1. 分析笔算乘法A = 0.1101 B = 0.1011AB = 0.10001111 0 . 1 1 0 1 0 . 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 . 1 0 0 0 1 1 1 1符
9、号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍乘积的符号心算求得 ?6.36.32. 笔算乘法改进A B = A 0.1011= 0.1A + 0.00A + 0.001A +0.0001A= 0.1A + 0.00A + 0.001( A +0.1A)= 0.1A + 0.010 A + 0. 1( A +0.1A)= 0.1A +0.1 0 A+0.1(A + 0.1A)= 2-1A +2-1 0 A+2-1(A + 2-1(A+0)第一步 被乘数A + 0第二步 右移 一 位,得新的部分积第八步 右移 一 位,得结果第三步 部分积 + 被乘数右移一位6.36.
10、33. 改进后的笔算乘法过程(竖式)0 . 0 0 0 0 0 . 1 1 0 1 0 . 1 1 0 10 . 1 1 0 10 . 0 0 0 00 . 1 1 0 1初态,部分积 = 0 乘数为 1,加被乘数乘数为 1,加被乘数乘数为 0,加 01 . 0 0 1 110 . 1 0 0 11 11 . 0 0 0 11 1 1乘数为 1,加 被乘数0 . 1 0 0 01 1 1 11,得结果1 0 1 1=0 . 0 1 1 01,形成新的部分积1 1 0 1=0 . 1 0 0 11,形成新的部分积1 1 1 0=0 . 0 1 0 01,形成新的部分积1 1 1 1=部 分 积
11、乘 数 说 明6.36.3小结 被乘数只与部分积的高位相加 由乘数的末位决定被乘数是否与原部分积相加,然后 1 位形成新的部分积,同时 乘数 1 位(末位移丢),空出高位存放部分积的低位。硬件3 个寄存器,具有移位功能1 个全加器6.36.3 乘法 运算可用 加和移位实现n = 4,加 4 次,移 4 次4. 原码乘法(1) 原码一位乘运算规则以小数为例设x原 = x0. x1x2 xny原 = y0. y1y2 yn= (x0 y0). x*y*x y原 = (x0 y0).(0. x1x2 xn)(0.y1y2 yn)式中 x*= 0. x1x2 xn 为 x 的绝对值y*= 0. y1y
12、2 yn 为 y 的绝对值乘积的符号位单独处理 x0 y0数值部分为绝对值相乘 x* y*6.36.3(2) 原码一位乘递推公式x* y* = x*(0.y1y2 yn)= x*(y12-1+y22-2+ + yn2-n)= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ) z1 znz0 = 0 z1 = 2-1(ynx*+z0) z2 = 2-1(yn-1x*+z1)zn = 2-1(y1x*+zn-1)z06.36.3例6.21已知 x = 0.1110 y = 0.1101 求x y原解:6.36.3 数值部分的运算0 . 0 0 0 0 0 . 1 1 1 0 0
13、 . 1 1 1 00 . 0 0 0 00 . 1 1 1 00 . 1 1 1 0部分积 初态 z0 = 0部 分 积 乘 数 说 明0 . 0 1 1 101 . 0 0 0 11 01 . 0 1 1 01 1 0 0 . 1 0 1 10 1 1 01,得 z4逻辑右移1 1 0 1=0 . 0 1 1 11,得 z10 1 1 0=0 . 0 0 1 11,得 z21 0 1 1=0 . 1 0 0 01,得 z31 1 0 1=逻辑右移逻辑右移逻辑右移+ x*+ 0+ x*+ x* 数值部分按绝对值相乘 乘积的符号位 x0 y0 = 1 0 = 1x* y* = 0. 1 0 1 1 0 1 1 0则 x y原 = 1. 1 0 1 1 0 1 1 0特点绝对值运算逻辑移位例6.21 结果用移位的次数判断乘法是否结束6.36.3(3) 原码一位乘的硬件配置A、X、Q 均 n+1 位移位和加受末位乘数控制0 A n加 法 器控 制 门0 X n移位和加控制计数器 CSGM0Q n右移6.36.3(4) 原码两位乘原码乘符号位 和 数值位 部分 分开运算两位乘每次用 乘数的 2 位判断 原部分积 是否加 和 如何加 被乘数1 11 00 10 0 加 “0” 2加 1 倍的被乘数 2加 2 倍的被乘数 2 加 3 倍的被乘数 2