当前位置:
文档之家› 运算方法和运算部件乘除及校验优秀课件
运算方法和运算部件乘除及校验优秀课件
运算方法和运算部件乘除及校 验优秀课件
3.3.1 定点数一位乘法
1.定点原码一位乘法 (1)乘法的运算规则 设 x=xf.x1x2…xn,y=yf.y1y2…yn
乘积为P,乘积的符号位为Pf,则
Pf=xf⊕yf,|P|=|x|•|y|
2
例A= 0.1101, B= 0.1011, 求A*B
0.1101 × 0.1011
0 1 边补0,
[-X]补
因为
00.0000 + 00.1101
00.1101
是正
00.0110
2) 1 0
数(根 据符 号扩
[X]补
+ 11.0011 11.1001
展原
11.1100
3) 0 1 理)
[-X]补 + 00.1101
右移
00.1001
时左
00.0100
4) 1 0
边补1, 因为
[X]补
Pi为部分积
00或11
i表示循环次
数(相加/ 移位的次数)
14
例3.34 x=-0.1101,y=-0.1011(书上y为正数),
求[x×y]补=?
解:
[x]补=11.0011, [-x]补=00.1101 (双符号)
[y]补=1.0101
(单符号)
15
步数 条件 操作 P
Y
1)
Yi+1Yi
右移 时左
位积=
原码一位乘法的算法流程图:
yn表示乘数 将要被判断
的那一位
Pi为部分积
i表示循环次
数(相加/ 移位的次数)
5
符号扩展
把一个数的位数进行扩充但其真值不变。 正数的符号扩展:最高符号位之前补0(“0”表
示正号)。 负数的符号扩展:最高符号位之前补1(“1”表
示负号)。 例: [X]补 =10010011,将其扩展成16位补码,得
= [X]补[(Y1-Y0)+2-1(Y2-Y1)+2-2(Y3-Y2)+……+ 2-n(Yn+1-Yn)]
n
[X]补•(Yi1Yi)2i i= 0
比较法:用相邻两位乘数比较的 结南华果大决学计定算机+学[院X]补、[-X]补或+0。 12
(Booth算法)的运算规则:
位积=( - )
补码一位乘法算法流程图:
符号位
10
校正
若例3.33中Y=-0.1011,求[X·Y]补时,需在最后右移1位后,+[-X]补。 11
(2) 比较法算法(布斯公式)
校正法在乘数为负数时,需要进行校正,控制起 来要复杂一些,我们希望有一个对于正数和负数都一 致的算法,这就是比较法。比较法是英国的Booth夫 妇提出来的,因此又称Booth法。
补码乘法不能简单的套用原码乘法的算法,因为补码的符号位是参 加运算的。
(1)校正法
正所,谓从校而正得法到,[X将Y[]X补]。补和[Y]补按原码运算,所得结果根据情况加以校 算法分析:
若被乘数X的符号任意--[X]补 = X0.X1X2……Xn
1)Y为正:[Y]补 = 0.Y1Y2……Yn [XY]补 = X补(0.Y1Y2……Yn)
17
3.3.2.定点数二位乘法 每次用两位乘数去乘被乘数,乘法速度提高一倍
+ 11.0011
5) 0 1
是负 数(根 据符 号扩 展原 理)
11.0111
11.1011
[-X]补
+ 00.1101
00.1000 [XY]补 = 0.10001111
Yi Yi+1 1.01010
1 1.0101
111.010
1111.01
11111.0
1111
16
(4)运算规则
•P、X取双符号位,符号参加运算; •Y取单符号位,符号参加移位,以决定最后是 否修正; •Y末位设置附加位Yi+1,初值为0,Yi+1Yi组成 判断位,决定运算操作; •需作n+1次累加,n次移位(最后一次不移位)。
+00.1101___________ 00.1101
部分积右移
00.0110 +00.1101
1101 1
加“被乘数”
_______________________
01.0011
加“0”
00.1001
1110 1
+00.0000
寄存器:
_________________________
A:存放部分积累加和、
[X]补 =1111111110010011 例: [X]补 =00101100,将其扩展成16位补码,得
[X]补 =0000000000101100
6
例3.31 X=0.1101,Y=0.1011,求X•Y. 计算过程如下:
A (部分积累加和) 00.0000
C(乘数)丢弃项 1011
加“被乘数”
00.1001
乘积高位
00.0100
1111 0
+00.1101
_________________________
B:存放被乘数 C:存放乘数、乘积低位
01.0001
00.1000
1111 1
Ps XsYs
A = 00.0000(初始值) B = |X| = 00.1101 C = |Y| = 00.1011
直接按原码 乘法运算
2)Y为负:[Y]补 = 1.Y1Y2……Yn
[Y]补=2+Y,真值 Y=[Y]补-2=1.Y1Y2…Yn-2
= 0.Y1Y2……Yn-1
Y<0,除按 1)
3)[XY符Y]号补 任= 意[X:]补[(X0Y.Y]补1Y=2…X…补Y[n0).+Y[1-YX2…]补…Yn]+[-X]补Y计0[算-X外]补,校另正加
01101 01101 00000 01101 0.10001111
位积 A×Bi
A*B= 0.10001111
笔算法的特点: n 位数相乘,需要将n个位积相加,需要2n位加 法器,不能有效利用全加器操作 由手算到机器实现,要解决三个问题:符号问题、 部分积相加进位问题、移位问题。
求|P|的运算规则:
XY 0.10001111
7
(2)逻辑实现
8
注意:
两操作数的绝对值相乘, 符号位单独处理。 寄存器A.B均设置双符号位,第1符号位始终是
部分积符号,决定在右移时第1符号位补0 操作步数由乘数的尾数位数决定,用计数器
Cd来计数。即作n次累加和移位。 最后是加符号位,根据Xs⊕Ys决定。
9
2、定点补码一位乘法
根据校正法的统一表达式: [XY]补 = [X]补(0.Y1Y2……Yn)+[-X]补Y0
= [X]补(0.Y1Y2……Yn)-[X]补Y0
=[X]补(-Y0+2-1Y1+ 2-2 Y2+……+2-n Yn) = [X]补 [-Y0+(Y1-2-1Y1)+(2-1 Y2-2-2 Y2)+……+(2-(n-1)Yn-2-n Yn)]