第5讲定点除法
5第五讲定点除法器
20
2 不恢复余数阵列除法器
21
二 定点运算器的组成
1. 2.
3.
4. 5.
基本构成 算术逻辑运算单元 数据缓冲寄存器 通用寄存器 多路寄存器 数据总线
22
1 逻辑运算
逻辑非运算 eg1: x=011001,求逻辑非 逻辑加运算 eg2: x=011001,y=110101,求逻辑加 逻辑乘运算 eg3: x=011001,y=110101,求逻辑乘 逻辑异或运算 eg4: x=011001,y=110101,求逻辑异或
X0X1X2X3Cn Cn+4=G+P Cn
28
74181ALU电路逻辑图
29
74181ALU相关讨论
1.
当M=0时,M对进位信号没有任何影
响。因此M=0时,进行算术操作。
2.
当M=1时,封锁了各位的进位输出,即
C =0,因此各位的运算结果F 仅与Y 和 X 有关,故M=1时,进行逻辑操作。
30
则第n+1步恢复余数,不移位。
16
二 并行除法器
与阵列乘法器相似,阵列除法器也是一种
并行运算部件。
阵列除法器有多种形式,如不恢复余数阵
列除法器、补码阵列除法器等等。
17
1 可控加法/减法(CAS)单元
Si=Ai⊕(Bi⊕P)⊕Ci Ci+1=(Ai+Ci)· (Bi⊕P)+AiCi
18
原码除法实例
11
2 原码不恢复余数法(加减交替法)
算法分析
第二步:2r1-B=r2’<0
第二步:2r1-B=r2’<0 第三步:r2’+B=r2(恢复余数) 第三步:2r2’+B=r3 (不恢复余数) 第四步:2r2-B=r3 2r2-B=2(r2’+B)-B =2r2’+B=r3
苏科版三(下)奥数教案第5讲~简单除法竖式
三(下)奥数第5讲~简单除法竖式例1:补全下面的竖式:
.......................□×8=5□..................7×□=3□板书:
1.梳理计算
2.能填的先填了
3.拆式
练习1:补全下面的竖式:例2:补全下面的竖式:练习2:补全下面的竖式:
第三部分:黄金倒三角你能确定哪些方框填什么?
例3:补全下面的竖式:
板书:
黄金倒三角
练习3:补全下面的竖式:
例4:补全下面的竖式:
百×除数
................................□×□□
..............................□×□□
............................□×□□
板书:
余数小于除数
练习4:补全下面的竖式:
自我挑战!
1:补全下面的竖式:
2:补全下面的竖式:
3:补全下面的竖式:
4:补全下面的竖式:
温故而知新!
1:在图中的□内填入合适的数字,使除法竖式成立。
2:在图中的□内填入合适的数字,使除法竖式成立。
3:在图中的□内填入合适的数字,使除法竖式成立。
4:在图中的□内填入合适的数字,使除法竖式成立。
5:在图中的□内填入合适的数字,使除法竖式成立。
3.3 定点数的除法
理原成组河南科技大学计算机定点数的除法运算3.3定点数的乘法运算明德笃行博学日新◆定点原码一位除法1)原码恢复余数法2)原码不恢复余数法◆定点补码一位除法博学日新明德笃行原码一位除法1. 运算法则假设被除数[X]原=X s X 1X 2……X n-1X n ,除数[Y]原=Y s Y 1Y 2…Y n-1Y n 商[Q]原=Q s Q 1Q 2……Q n ,则有[Q]原= (X s ⊕Y s ).(|X|×|Y|)即商的符号位等于两数符号位的异或,商的数值部分等于两数绝对值相除。
博学日新明德笃行原码一位除法0.1 0 1 10.11010.0 1 1 0 10.0 0 1 1 0 10.0 1 0 0 1 0.0 0 0 1 0 10.0 0 0 0 0 0 00.0 0 0 0 0 1 1 1…商Q S =X S ⊕Y S =0⊕0=0 X/Y=0.1101 …被除数 X(R 0) …部分余数R 1 …部分余数R 2…余数R 40 . 1 1 0 1 0 0 0 0 2-1Y,除数右移1位,减 2-2Y,除数右移1位,减 2-4Y,除数右移2位,减 2-3Y,除数右移1位,不减 0.0 0 0 1 0 1 0 0.0 0 0 0 1 1 0 1 …部分余数R 3商符单独处理 心算上商(比较大小)?? ? 余数不动低位补“0”减右移一位的除数上商位置不固定1)被除数(绝对值)减去除数(绝对值);2)判别余数正负:若为正数,上商1;若为负数,上商0,然后恢复余数+[|Y|]补;3)余数和商共同左移一位。
4)重复上述过程(左移n次,上商n+1次)。
说明:1)计算机内的运算过程仍用补码。
2)在原码一位乘中通常有以下约定:●小数定点除法 |x| < |y|,整数定点除法 |x| > |y| (避免商溢出)被除数不等于 0,除数不能为 0解:[|X|]原=00.1001,[|Y|]原= [|Y|]补=00.1011 ,[-|Y|]补=11.01010 0 . 1 0 0 1 + 1 1 . 0 1 0 1 X 减Y 1 1 . 1 1 1 0 + 0 0 . 1 0 1 0 余数R 0<0,商0 0恢复余数 0 0 . 1 0 0 1 ← 0 1 . 0 0 1 0 + 1 1 . 0 1 0 1 0 0 . 0 1 1 1 ←0 0 . 1 1 1 0 + 1 1 . 0 1 0 10 0 . 0 0 1 1 ←0 0 . 0 1 1 0 + 1 1 . 0 1 0 1R 0’商0移入Q ,R 0’左移 减Y余数R 1>0,商1 0.1商1移入Q ,R 1’左移 减Y余数R 2>0,商1商1移入Q ,R 2’左移 0.1 1减Y[-|Y|]补[|Y|]补[-|Y|]补[-|Y|]补[-|Y|]补0 0 . 1 0 1 0 + 1 1 . 1 0 1 10 0 . 0 1 1 0 ←0 0 . 1 1 0 0 + 0 0 . 1 1 0 0 0 0 . 0 0 0 1 0 0 . 0 0 0 1←余数R 3<0,商0 恢复余数R 3’=2R 2商 0 移入Q ,R 3’左移 减Y余数R 4>0,商1 商 1 移入Q ,R 4不左移0.1 1 00.1 1 0 1[-|Y|]补[|Y|]补[|Q|]原=0.1101 余数[R]原=0.0001Qs=XS ⊕YS=0⊕0=0R=2-4×0.0001博学日新明德笃行原码恢复余数法(1)某一次-Y 的差值为负时,要多一次+Y 恢复余数的操作,降低了执行速度。
定点数除法运算
用异或门实现 可控取反: y0=y y1=y 11
0 1 0
0
y1
x1 y2
∑
x2
y3
x3
∑
∑
∑
x4
∑
∑
∑
∑
x5
∑
∑
∑
∑
x6
∑
∑
∑
∑
q0 = 0
q1
q2
q3
r3
r4
r5
r6
12
4.4.2 补码除法运算
补码不恢复余数除法的运算规则: 1.被除数与除数同号,则被除数减去除数;被除数与 除数异号,则被除数加上除数。 2.若所得余数与除数同号,则上商1,余数左移一位减 去除数;若所得余数与除数异号,则上商0,余数左移 一位加上除数。 3.重复第2步,若采用末位恒置1法,则共做n次(n为 除数补码包括符号位的位数)。 4.商的符号位与数值位均在运算中产生。
原码加减交替法的运算规则可归纳如下:
1)若余数≥0,上商“1”,余数左移一位,减除数; 2)若余数<0,上商“0”,余数左移一位,加除数。
5
例:已知被除数X=-0.10001011,除数Y=+0.1110, 用加减交替法求商。 解:
商符=10=1 除数的相反数: [- Y]补 =11.0010
商 操作 X,Y异号 +[Y]补 1 R1与Y同号,商1
←1
+[-Y]补 0 R2与Y异号,商0
←1
+[Y3;[-Y]补 1 R3与Y同号,商1
←1
∴[商]补=1.0111
R = -0.1101×2-4
1 未位恒置1
作业
定点除法
[y]补=0.1011 [-y]补=1.0101 解:[x]补=[x]补=0.1001 被除数x/余数 余数r 商数q 被除数 余数 商数 0 0.1 0 0 1 +[-y]补 1 1.0 1 0 1 1 1.1 1 1 0 +[y]补 0 0.1 0 1 1 0 0.1 0 0 1 0 ← 0 1.0 0 1 0 +[-y]补 1 1.0 1 0 1 0 0.0 1 1 1 0.1 ← 0 0.1 1 1 0 +[-y]补 1 1.0 1 0 1 0 0.0 0 1 1 0.11 ← 0 0.0 1 1 0 +[-y]补 1 1.0 1 0 1
2.4定点除法运算 定点除法运算
2.4.1 原码除法算法原理 两个原码表示的数相除时,商的符号由两数的符号按位相加求 两个原码表示的数相除时 商的符号由两数的符号按位相加求 商的数值部分由两数的数值部分相除求得。 得,商的数值部分由两数的数值部分相除求得。 商的数值部分由两数的数值部分相除求得 设有 被除数x,其原码为 [x]原=xf .xn-1…x1x0 其原码为 [y]原=yf .yn-1…y1y0 除数y,其原码为 其原码为 则有商q 则有商 =x/y,其原码为 其原码为 [q]原=(xf⊕yf)+(0.xn-1…x1x0/0.yn-1…y1 y 0) 商的符号运算q 与原码乘法一样,用模 求和得到。 用模2求和得到 商的符号运算 f=xf⊕yf与原码乘法一样 用模 求和得到。 商的数值部分的运算,实质上是两个正数求商的运算 实质上是两个正数求商的运算。 商的数值部分的运算 实质上是两个正数求商的运算。根据我们 所熟知的十进制除法运算方法,很容易得到二进制数的除法运算 所熟知的十进制除法运算方法 很容易得到二进制数的除法运算 方法,所不同的只是在二进制中 商的每一位不是“ 就是 所不同的只是在二进制中,商的每一位不是 就是“ 其 方法 所不同的只是在二进制中 商的每一位不是“1”就是“0”,其 运算法则更简单一些。 运算法则更简单一些。
定点除法
被除数x/余数r
商数q
0 0.1 0 0 1
1
+[-y]补 1 1.0 1 0 1 1 1.1 1 1 0
1 1.1 1 0 0
10
+[y]补 0 0.1 0 1 1 0 0.0 1 1 1
0 0.1 1 1 0
101
+[-y]补 1 1.0 1 0 1
0 0.0 0 1 1
0 0.0 1 1 0
设被除数x=0.1001,除数y=0.1011,模仿十进制除法运算, 以手算方法求x÷y的过程如下:
0.1 1 0 1
商q
0.1 0 1 1 ∕ 0.1 0 0 1 0 -0.0 1 0 1 1 0.0 0 1 1 1 0 -0.0 0 1 0 1 1 0.0 0 0 0 1 1 0 -0.0 0 0 1 0 1 1 0.0 0 0 0 1 1 0 0 -0.0 0 0 0 1 0 1 1
(2.40)
当 P=0时,方程式(2.40)就是我们熟悉的一位全加器(FA)
的公式:
Si=Ai⊕ Bi⊕ Ci
Ci+1=AiBi+BiCi+AiCi
当 P=1时。则得求差公式:
Si=Ai⊕ Bi⊕ Ci
Ci+1=AiBi +BiCi + AiCi (2.41) 其中 Bi=Bi ⊕ 1.
在减法情况下,输入Ci称为借位输入,而Ci+1称为借位输出. 为说明CAS单元的实际内部电路实现,将方程式(2.40)加以变换,
0.11
+[-y]补 1 1.0 1 0 1
1 1.1 0 1 1
1 1. 0 1 1 0
0.110
+[y]补 0 0.1 0 1 1
定点乘除法运算
例3.35:设X=-0.1101,Y=0.1011,即[X]补=11.0011,[Y]补=0.1011 ,[-X]=00.1101 求 设 即 补 补 [X•Y]补. 补 部分积 乘数Y Yi Yi+1 说明 计算过程如下: 计算过程如下
+ 00 0000 00 1101 00 1101 → + 00 0110 00 0000 00 0110 → + 00 0011 11 0011 11 0110 → + 11 1011 00 1101 00 1000 → + 00 0100 11 0011 11 0111 0 0 0 1 0 0 0 1 0 1 右移一位 Y1Y0=10 +[X]补 0 0 1 0 1 0 右移一位 Y2Y1=01 +[-X]补 0 1 0 1 0 1 右移一位 Y3Y2=10 +[X]补 1 0 1 0 1 1 右移一位 Y4Y3=11 +0 0. 1 0 1 1 0 初始值,最后一位补0 Y5Y4=01 +[-X]补
2.硬件快速乘法器实现 硬件快速乘法器实现
利用中大规模集成电路芯片, 利用中大规模集成电路芯片,在一拍节中实现多项 部分积的相加,成为阵列乘法器。 部分积的相加,成为阵列乘法器。
3.3.1 定点数一位乘法 1. 定点原码一位乘
规则:在机器中采用 寄存器来分别存放部分积, 规则 在机器中采用A,B,C寄存器来分别存放部分积,被乘 在机器中采用 寄存器来分别存放部分积 数和乘数 (1)在机器内一次加法操作只能求出两数之和,因此 )在机器内一次加法操作只能求出两数之和, 每求得一个相加数时,就得与上次部分积相加。 每求得一个相加数时,就得与上次部分积相加。 (2)人工计算时,相加数逐次向左偏移一位,由于最 )人工计算时,相加数逐次向左偏移一位, 后的乘积位数是乘数(或被乘数)的两倍.由于在求本 后的乘积位数是乘数(或被乘数)的两倍 由于在求本 次部分积时,前一次部分积的最低位,不再参与运算, 次部分积时,前一次部分积的最低位,不再参与运算, 因此可将其右移一位。相加数可直送而不必偏移, 因此可将其右移一位。相加数可直送而不必偏移,于是 位加法器就可实现两个N位数相乘 用N位加法器就可实现两个 位数相乘。 位加法器就可实现两个 位数相乘。 (3)部分积右移时乘数寄存器同时右移一位,这样可 )部分积右移时乘数寄存器同时右移一位, 以用乘数寄存器的最低位来控制相加数( 以用乘数寄存器的最低位来控制相加数(取被乘数或 ),同时乘数寄存器的最高位可接收部分积右移出来 零),同时乘数寄存器的最高位可接收部分积右移出来 的一位,因此,完成乘法运算后, 寄存器中保存乘积 的一位,因此,完成乘法运算后,A寄存器中保存乘积 的高位部分,乘数寄存器C中保存乘积的低位部分 中保存乘积的低位部分。 的高位部分,乘数寄存器 中保存乘积的低位部分。
14定点除法运算
若A01=B0,[A]补+[-B] 补=[R0] 补=,必有01B0(余数与 除数异号),故商为正(商上0) 若A01B0 ,[A]补+[B] 补=[R0] 补=,必有01=B0 (余数与 除数同号) ,故商为负(商上1)
2009-10-4
24
3.4.2、补码一位除法
4) 恢复余数
作完最后一步除法后
除法除尽时,判0逻辑判出全0(∑),将A置成全0
除法除不尽时,判0逻辑标志不是全0
若C0=0(被除数与除数同号),且余数与除数异号,说明 是假余数(由于作减法造成) ,应作[Rn]补+[B]补其结果送 回A,以恢复余数
Ri+1 = 2(Ri + |B|) - |B| 将上式变换一下,得:
Ri+1 = 2 Ri + |B|
视Ri为真余数,左 移一位再加|B|就可
得到新余数Ri+1
2009-10-4
10
3.4.1、原码一位除法
加法交替法
若Ri>0,得到下步除法的新余数Ri+1: Ri+1 = 2Ri - |B|
若Ri<0,要得到下步除法的新余数Ri+1,不必恢复 余数,只要将Ri视为真余数,左移一位,再加上 |B|就得到新余数Ri+1: Ri+1 = 2Ri + |B|
5) 修正商
①若除数为正(B0=0)
除尽那步除法所得余数[Ri]补=0,其符号位为正(故 A01=B0),故除尽步商为1,由于:
[Ri+1]补=2[Ri]补+[-B]补=[-B]补 [Ri+1]补与除数异号,商上0。下一步除法余数:
3.4定点除法运算-计算机系统原理-刘均-清华大学出版社
3.4定点除法运算
3.4定点除法运算
计算机中的除法运算是参照笔-纸除法运算过程,采用移位和加 减运算的迭代过程实现的。
[例3-7]已知X=0.1011B,Y=0.1101B,采用笔-纸运算求X/Y的商和 余数。
X/Y的商为0.1101B,余数为0.0111B
3.4.1原码除法运算
2.恢复余数法 已知两个正的定点小数X和Y,求X/Y的商q和余数R的步骤如下: (动画演示文件名:虚拟机10-原码恢复余数除法运算器.swf) 1)R1=X-Y。
◦ 若R1<0,则上商q0=0。然后恢复余数:R1=R1+Y。 ◦ 若R1≥0,则上商q0=1。此时被除数X大于等于Y,做溢出处理。
◦ Ri’=2Ri-1-Y, ◦ 当Ri’≥0时,上商1,余数不恢复,Ri=Ri’,计算Ri+1时,左移一
位,得Ri+1=2Ri-Y ◦ 当Ri’<0时,上商0,应做恢复余数操作,Ri=Ri’+Y,然后计算
Ri+1时,Ri+1=2Ri-Y=2(Ri’+Y)-Y=2Ri’+Y。
因此,当第i次的部分余数是负数时,可以跳过恢复 余数的步骤,直接求第i+1步的部分余数。这种算法 称为不恢复余数法,又称为加减交替法。
2)若第i次的部分余数为Ri,则第i+1次的部分余数为Ri+1, Ri+1=2Ri-Y
◦ 若Ri+1<0,则上商qi=0,同时恢复余数Ri+1=Ri+1+Y。 ◦ 若Ri+1≥0,则上商qi=1。
3)循环执行第2)步,直到求得所需位数的商。
3.4.1原码除法运算
[例3-8]已知X=+0.1011B,Y=-0.1101B, 求[X/Y]原
定点数乘除运算及实现
[X •Y ]补 =0. 011110
所以:
1
实现补码一位乘法的乘法器的逻辑框图如图所示
2
补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。 即:
3
【 (Z i+2)补】=
4
2-2 {【 Z i补】+ (Yn+1 +Yn-2Y n-1) 】 · 【X 】补}
余数<0
商0即q0=0
+ ︱ y ︱
0. 1 1 0 1
——————————
0. 1 0 0 1
左移1位
1. 0 0 1 0
- ︱ Y ︱
1. 0 0 1 1
+[-| y| ]补
——————————
0. 0 1 0 1
余数>0
商1即q1=1
+[-| y| ]补
1. 0 0 1 1
——————————
0. 0 1 1 1
左移1位
0. 1 1 1 0
+[-| y| ]补
1. 0 0 1 1
———————————
0. 0 0 0 1
余数>0
商1即q4=1
所以:商:Q=-0.1011, 余数:R=+0.00012-4
对上述手算计算过程分析得:
(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1; 余数小时,商0。第一次比较时,余数就是被除数。 (2) 每做一次减法,总是保持余数不动,而除数向右移一位。 (3)最后据符号位运算的结果给商以正确的符号
为适应机器运算,需要进行改进: (1) 用减法来比较余数和除数的大小 (2) 除数右移改为余数左移。 (3)定点除法运算必须要求被除数的高n位小于除数,否则益处
双符号等位二进制定点小数除法
双符号等位二进制定点小数除法
双符号等位二进制定点小数除法是一种计算机数学运算,用于将两个定点小数相除。
它的特点是采用二进制计算,同时考虑了正负数的情况,因此使用了双符号表示法。
在进行双符号等位二进制定点小数除法时,需要先将两个定点小数转换为二进制形式,并补齐小数点后的位数。
接着,根据除数的符号确定商的符号,并将被除数和除数取绝对值进行计算。
在计算过程中,需要先进行整数部分的除法运算,然后再进行小数部分的除法运算。
小数部分的除法运算需要注意在进行除法时的进位和退位操作。
最终,根据商的符号和小数点位置,将计算结果转换为定点小数形式。
在进行结果的舍入时,需要考虑舍入方式和精度的要求。
双符号等位二进制定点小数除法在计算机科学中有广泛的应用,例如在计算机图形学中用于坐标变换和颜色混合等运算。
- 1 -。
双符号等位二进制定点小数除法
双符号等位二进制定点小数除法
在这种方法中,首先需要将被除数和除数转换成二进制表示,并按照小数点位置对齐。
然后,将它们分别转换成带符号整数,进行除法运算。
在进行除法运算时,需要注意处理符号位。
如果被除数和除数的符号相同,则结果为正数;如果符号不同,则结果为负数。
此外,还需要考虑到小数位的精度问题,保留合适的小数位数并进行舍入。
总之,双符号等位二进制定点小数除法是一种常见的数学运算方法,它在计算机科学和工程技术中得到广泛应用。
- 1 -。
定点数乘除运算及实现33页PPT
谢谢你的阅读
❖ 知识就是财富 ❖ 丰富你的人生
71、既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。——康德 72、家庭成为快乐的种子在外也不致成为障碍物但在旅行之际却是夜间的伴侣。——西塞罗 73、坚持意志伟大的事业需要始终不渝的精神。——伏尔泰 74、路漫漫其修道远,吾将上下而求索。——屈原 75、内外相应,言行相称。——韩非
Hale Waihona Puke 定点数乘除运算及实现41、实际上,我们想要的不是针对犯 罪的法 律,而 是针对 疯狂的 法律。 ——马 克·吐温 42、法律的力量应当跟随着公民,就 像影子 跟随着 身体一 样。— —贝卡 利亚 43、法律和制度必须跟上人类思想进 步。— —杰弗 逊 44、人类受制于法律,法律受制于情 理。— —托·富 勒
定点乘除法运算共17页文档
36、如果我们国家的法律中只有某种 神灵, 而不是 殚精竭 虑将神 灵揉进 宪法, 总体上 来说, 法律就 会更好 。—— 马克·吐 温 37、纲纪废弃之日,便是暴政兴起之 时。— —威·皮 物特
38、若是没有公众舆论的支持,法律 是丝毫 没有力 量的。 ——菲 力普斯 39、一个判例造出另一个判例,它们 迅速累 聚,进 而变成 法律。 ——朱 尼厄斯
40、人类法律,事物有规律,这是不 容忽视 的。— —爱献 生
ቤተ መጻሕፍቲ ባይዱ
6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出的人谈话。——笛卡儿
Thank you
定点除法运算
手算除法的例子:
2
手算除法的例子
q0 q1q2 q3 q4 0. 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1
0.1 1 0 1 R0 R1=R0-2-1q1Y R2=R1-2-1q2Y
14
例:
例:已知[X]补=1.01110101,[Y]补=0.1110,用补码除法 求[X/Y]补 解:[-Y]补=1.0010
15
符号 11 +00 00 00 +11 11 11 +00 00 00 +11 00 00 +11 11
被除数 01110101 1110 01010101 10101011 0010 11001011 10010110 1110 01110110 11101101 0010 00001101 00011011 0010 0011 1011
例:已知被除数X=-0.10001011,除数Y=+0.1110,用 加减交替法求商和余数。 解:商符=10=1
除数的相反数: [-Y]补 =11.0010 补码加减 因为运算过程中有左移,需采用双符号位。
9
|X|=00.10001011, |Y|=00.1110, [-Y]补 =11.0010 符号位 余数 商 操作 00 10001011 初始值:被除数X +[-Y]补 +11 0010ห้องสมุดไป่ตู้11 10101011 0 R<0,商0 11 01010110 +00 1110 00 00110110 1
操作
-|Y| 0 R<0,商0
←1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i—1→i
N i=0? Y
末位商qn←1 结束
[例2] X=+0.0100,Y=-0.1000, 用补码加减交替法计算X÷Y 解: [X]补= 0.0100
10
无符号数不恢复余数 除法算法流程图
Y
开始 计数器i=0 X-Y→ R N
Ri <0? 商上0, Ri左移一位, 2 Ri+Y→Ri+1 除数、被除数符合规定 允许进行除法运算。 符号位单独运算。图中 的X和Y实际是|X|和|Y|。 第一位商是小数点左边的0 总共求出N+1位商 i+1→i
N Y N
商上1, Ri左移一位, 2 Ri-Y→Ri+1
i=n? Rn <0? 商1
结束 Y
商0 RnБайду номын сангаас+Y
[例1] X= -0.1001 ,Y=+0.1011,用原码不恢复余数法计算X÷Y 解: [X]原=1.1001 |X|=0.1001 商的符号位 [Y]原=0.1011 |Y|=0.1011 [-|Y|]补= - 1.0101
Q0 = X 0 ⊕ Y0 = 1 ⊕ 0 = 1
12
被除数/余数
商
0. 1 0 0 1 0000 0 减Y用加-|Y|的补码实现 减|Y| +) 1. 0 1 0 1 余数为负,商上0 1. 1 1 1 0 0000 0 左移 1. 1 1 0 0 0000 加|Y| +) 0. 1 0 1 1 余数为正,商上1 0000 1 0. 0 1 1 1 左移 0. 1 1 1 0 0001 减|Y| +) 1. 0 1 0 1 余数为正,商上1 0. 0 0 1 1 0001 1 左移 0. 0 1 1 0 0011 减|Y| +) 1. 0 1 0 1 余数为负,商上0 1. 1 0 1 1 0011 0 左移 1. 0 1 1 0 0110 加|Y| +) 0. 1 0 1 1 余数为正,商上1 0. 0 0 0 1 0110 1 |X÷Y|=0.1101 [X÷Y]原=1.1101, X÷Y=-0.1101 余数 |R| =0.0001*2-4, R=-0.00000001
15
补码加减交替除法算法 流程图(末位商恒置1)
Y
末位商恒置1法
计数器i=N
N X0=Y0?
[X] 补 +[-Y] 补 →[R0]
补
[X]补+[Y]补→[R0]补
N
Y R0= Y0?
商上1, 1, [Ri]补左移一位, 2[Ri]补+[-Y]补→[Ri+1]
补
商上0, 0, [Ri]补左移一位, 2[Ri]补+[Y]补→[Ri+1]补
7
2. 恢复余数法
Restoring division
直接从被除数/余数中减去除数,若够减,余数为正,上商1; 若不够减,余数为负,上商0。此时,必须将除数加回去,恢复 成原来的余数,以便继续计算,因此称为恢复余数法。 恢复余数法在不够减时要恢复余数,多做一次加法操作,运 算速度因而受到影响,控制线路复杂,运算不规则,运算时间与 数据有关。 在计算机中实际采用的是不恢复余数法Non-restoring division 。
6
原码除法运算
Unsigned Binary Division
原码除法,商的符号位是除数和被除数的符号位的异或值, 原码除法,商的符号位是除数和被除数的符号位的异或值, 商的值是用被除数的绝对值除以除数的绝对值得出的。 商的值是用被除数的绝对值除以除数的绝对值得出的。 计算机不能象人那样用观察的方法决定是上商0还是上商1。 1. 比较法 用汇编语言编写除法运算程序,可以用比较指令比较除数和被 除数(余数)的大小,以决定是上商0还是上商1,这就是比较法。 计算机的比较指令实质上也是做减法,但摒弃减法的结果, 不改变被减数,只影响状态标志寄存器的Cy(进位/借位),S (符号),Z(零)等标志位的状态。 若Cy=1,表明有借位,被除数小于除数,应当上商 ,不做 ,表明有借位,被除数小于除数,应当上商0, 被除数/余数减除数 只把被除数/余数左移一位 反之,上商1, 余数减除数, 余数左移一位。 被除数 余数减除数,只把被除数 余数左移一位。反之,上商 , 做被除数/余数减除数 并把余数左移一位。 余数减除数, 做被除数 余数减除数,并把余数左移一位。 比较法要多做一次比较,降低了速度。
4
手工计算二进制除法的方法 商0.1 1 0 1 1 除数 0.1101 0.1011 被除数 01101 先判断被除数与除数的大小 若被除数小,则上商0,并 把被除数的下一位(若存 在)移下来;或在余数最 低位补0,再用余数与右移 一位的除数比较,若够除 则上商1,否则上商0。 然后继续重复以上步骤, 直至除尽(余数为0)或求 得的商的位数满足要求为 止。
计算机组成原理
Principles of Computer Organization
广义双语教学课程 青岛理工大学 校级精品课程 http://211.64.192.109/skyclass25/ /ec/C84/
第6章 计算机的运算方法 章
(4)
Several algorithms exist to perform division in digital designs. These algorithms fall into two main categories: slow division and fast division. Slow division algorithms produce one digit of the final quotient per iteration. Examples of slow division include restoring, non-performing restoring, non-restoring, and SRT division. Fast division methods start with a close approximation to the final quotient and produce twice as many digits of the final quotient on each iteration. Newton-Raphson and Goldschmidt fall into this category.
2
§ 6. 3. 4 除法运算
Binary (Fixed-Point) Division Arithmetic
Unsigned Binary Division Tow’s complement Division
原码除法 补码除法
3
计算机的除法运算对除数和被除数的大小有限制。 首先,除数不能为零。其次,定点除法运算可能会发生溢出。 •对于定点小数,若被除数大于或等于除数,则商将大于或等于1, 发生溢出。 所以,小数除法要求 0<|被除数 除数 。 被除数|<|除数 小数除法要求 被除数 除数|。 •对于定点整数,商也应是整数。要求 0<|除数|≤|被除数|。 计算机在做除法之前,必须先检查除数和被除数是否为零。若 除数为零,则转出错处理。若被除数为零,则直接得出商为零。 若除数和被除数都不为零,则判断是否可能发生溢出。 若除数是n位,则得到n位的商Quotient和n位的余数Remainder。 整数除法若被除数Dividend只有n位,是不会发生溢出的。但 是,若被除数为2n位,则被除数的高n位的绝对值必须小于除数 Divisor的绝对值,否则,将发生溢出。 小数除法, 被除数|<|除数 小数除法,只要满足 |被除数 除数 就不会溢出。 被除数 除数| 就不会溢出。
部分余数 010010 01101 Partial Remainder 0010100 01101 001110 01101
5
计算机实现除法时,要把除数右移改为被除数 余数左移 要把除数右移改为被除数/余数左移 要把除数右移改为被除数 余数左移。 要求计算机把求得的商直接写进商寄存器的每个对应位也是 不可取的,通常是把商上到商寄存器的最低位,并把部分商左移 通常是把商上到商寄存器的最低位, 通常是把商上到商寄存器的最低位 一位。 一位 运算过程中,存放被除数/余数和商的寄存器一同移位。计算 计算 完成后,商寄存器中是商的尾数, 完成后,商寄存器中是商的尾数,原来存放被除数的寄存器中是 余数。 余数 做减法时,对于n位的除数,也不要求2n位的加法器,只需 用n位的加法器即可。
14
当[X]补与[Y]补同号时,[X]补—[Y]补肯定不够减,余数[R]补 与除数[Y]补异号,上商0,符合同号相除为正的规则。 当[X]补与[Y]补异号时,[R]补与[Y]补同号,应上商1,也符合异 号相除为负的规则。 当商为正时,上商规则与原码除法相同:余数与除数同号表 明够减,上商1;余数与除数异号表明不够减,上商0。 当商为负时,余数与除数异号表明够减,应上商0而非上商1; 余数与除数同号表明不够减,应上商1而非上商0。即在上商时, 负商的每位商的值与真值相反,实际上是反码。而补码和反码的 区别仅在最低数值位差1(即2-n)。这就需要对负商进行修正, 以得到补码形式的商。 在对商的精度要求不高时,可采用“末位商恒置 末位商恒置1”法,即包 末位商恒置 括符号位在内只求n位的商,第n+1位则恒置1。“末位商恒置1” 法的操作简单,易于实现,其最大误差是 |2-n|。
8
3. 加减交替法(不恢复余数法Non-restoring division ) 加减交替法(不恢复余数法 不恢复余数法的思想是当某一次减法的差为负时,不是把 它恢复成原来的值,而是设法直接用这个负的差值求下一位商。 设上次余数为R 设上次余数为 i。 •当Ri ≥0时, 商上 , 继续求下次余数; 商上1, 继续求下次余数; 当 时 将余数左移一位得2 再减除数, 将余数左移一位得 Ri , 再减除数, 即 2 Ri-Y=Ri+1。 = + •当Ri <0时, 商上 。 此时若恢复余数, 应做 i+Y, 商上0。 此时若恢复余数, 应做R 当 时 , 然后将余数左移一位(成为2 然后将余数左移一位(成为 Ri+2Y), ), 再减除数, 再减除数, 即2 Ri+2Y-Y = 2 Ri+Y=Ri+1 - = + 而将余数R 左移一位成为2 显然,若不恢复余数,而将余数 i左移一位成为 Ri,再加除数, 结果与恢复余数法一样。但却把加Y、左移、 结果与恢复余数法一样。但却把加 、左移、减Y三个步骤简化 三个步骤简化 成左移、 两个步骤。 成左移、加Y两个步骤。 两个步骤