定点除法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
被除数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
0 0.0 0 0 1
0.1101 商“1”。仅q左移一位
得 q=x÷y=0.1101,余数 r=2-4xr4
二.补码一位除法
和补码加、减、乘法一样,补码除法也应当是符号位与数 位位一起参加运算,商的符号位与数位由统一的算法求得。
2.4定点除法运算
2.4.1 原码除法算法原理
两个原码表示的数相除时,商的符号由两数的符号按位相加求
得,商的数值部分由两数的数值部分相除求得。
设有原码为
[x]原=xf .xn-1…x1x0 [y]原=yf .yn-1…y1y0
[q]原=(xf⊕yf)+(0.xn-1…x1x0/0.yn-1…y1 y0)
0 0.1 1 1 0
0.1
+[-y]补 1 1.0 1 0 1
0 0.0 0 1 1
0 0.0 1 1 0
0.11
+[-y]补 1 1.0 1 0 1
1 1.1 0 1 1
+[y]补 0 0.1 0 1 1
0 0.0 1 1 0
0 0.1 1 0 0
0.110
+[-y]补 1 1.0 1 0 1
0 0.0 0 0 1
0 0.0 0 0 1
0.1101
故得:[q]原=0.1101, 余数[r]原=0.0001 即r=2-4r4 2.加减交替法
对恢复余数法来说,由于要恢复余数,使除法进行过程的步数 不固定,因此控制比较复杂。实际中常用不恢复余数法,又称 加减交替法。其特点是运算过程中如出现不够减,则不必恢复 余数,根据余数符号,可以继续往下运算,因此步数固定,控制简 单。
图2.9 不恢复余数阵列除法器逻辑结构图
商q是一个3位的小数: q=0.q1q2q3
原码加减交替法的规则是:当余数为正时,商“1”,余数 左移一位,减除数;当余数为负时,商“0”,余数左移一位, 加除数。证明如下:
除数每一步运算所得的余数ri (i=1,2, … ,n,r0=x)可以通过蒋 前一步的余数ri-1(第一步为r0=x)左移一位减除数y得到,即
ri=2ri-1-y 如果ri<0,商上“0”,并恢复余数(即+y),然后左移一位(即 乘2),再做减y运算,得到ri-1, 即 ri+1=2(ri+y)-y=2ri+y
被除数x/余数r
商数q
0 0.1 0 0 1
+[-y]补 1 1.0 1 0 1 1 1.1 1 1 0
1 1.1 1 0 0
0
+[y]补 0 0.1 0 1 1 0 0.0 1 1 1
0 0.1 1 1 0
0.1
+[-y]补 1 1.0 1 0 1
0 0.0 0 1 1
0 0.0 1 1 0
tc=(n+1)(ta+tr)+tr 其中n为尾数位数。当加法操作与移位操作在同一操作步骤中
完成时,
tc=(n+1)ta+tr 2.商的修正:
一般情况采用未位恒置“1”的方式进行舍入。 如果需要进一步以高精度,可以不用未位恒置“1”的方式 舍入,而按上述法则多求一位后,再采用如下修正方法对商 进行处理: (1) 刚好能除尽时,如果除数为正,商不必修正;如果除数 为负,则商加2-n. (2) 不能除尽时,如果商为正,则不必修正,如果商为负, 则商加2-n.
1 011
+[-y]补 1 1.0 1 0 1
1 1.1 0 1 1
1 1. 0 1 1 0
1 0110
+[y]补 0 0.1 0 1 1
0 0.0 0 0 1
0 0.0 0 0 1 0.1101 商“1”。仅q左移一位,余数不左移
故得 :[q]补=0.1101,余数 [r]补=0.0001xr4 设除ta为法加的法总操时作间时为间,为tr左移操作时间,则做一次补码一位
3.并行除法器
(1).可控加法/减法(CAS)单元
和阵列乘法器非常相似,阵列式除 法器也是一种并行运算部件,采用 大规模集成电路制造.与早期的串 行除法器相比,阵列除法器不仅所 需的控制线路少,而且能提供令人 满意的高速运算速度。阵列除法 器有多种多样形式,如不恢复余数 阵列除法器,补码阵列除法器等等。
0 0.1 1 1 0 1 1.0 1 0 1 0 0.0 0 1 1
0 0. 0 1 1 0 0 0. 1 1 0 0
1 1. 0 1 0 1 0 0. 0 0 0 1
商q
x<y , 商0
被除数左移1位, 2x>y,商1
减y,即+[-y]补 第一次余数r1 左移1位, 2r1>y,商1 减y
被除数 x=0.x1x2x3x4x5x6 (双倍长)
除数
y商余字=数数长0.y1qryn+= =2y100=3..q0014qr32rq43r5r6
由图看出,该阵列除法器是用一个可控加法/减法(CAS)单元所 组成的流水阵列来实现的。推广到一般情况,一个(n+1)位除 (n+1)位的加减交替除法阵列由(n+1)2个CAS单元组成,其中 两个操作数(被除数与除数)都是正的。
在计算机中,小数点是固定的,不能简单地采用手算的办法。为 便于机器操作,除数y固定不动(小数点固定),使被除数和余 数进行左移(相当于乘2),其效果与笔算是相同的.例如:
0 0.1 1 0 1 0.1 0 1 1 ∕0 0.1 0 0 1
0 1.0 0 1 0 1 1.0 1 0 1 0 0.0 1 1 1
第二次余数r2 左移1位, 2r2>y,商0 左移1位, r3=4r2>y,商1 减y
第四次余数r4
和手算结果相比,结果是一样的,只是余数不是真正的
余数.由于每次所得的余数多乘了2,求得小数点后的n位 商后,相当于多乘了2n,故最后的正确余数应为2-nrn.很 显然,用余数左移来代替除数右移,可使“余数左移” 和“左移上商”的左移操作统一起来。
可得如下形式:
Si=Ai⊕(Bi⊕P)⊕Ci =AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+ AiBiCiP+AiBiCiP+AiBiCiP
Ci+1=(Ai+Ci)(Bi⊕P)+AiCi =AiBiP+AiBiP+BiCiP+BiCiP+AiCi
在这两个表达式中,每一个都能用一个三级组合逻辑电路(包 括反向器)来实现。因此每一个基本的CAS单元的延迟时间为 3T单元。
2.不恢复余数的阵列除法器
假定所有被处理的数都是正的小数。 不恢复余数的除法也就是加减交替法。在不恢复余数的除
法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一 行输出的符号与被除数的符号是否一致。当出现不够减时,部分 余数相对于被除数来说要改变符号。这时应该产生一个商位 “0”,除数首先沿对角线右移,然后加到下一行的部分余数上。当 部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该 是减法。下图示出了4位除4位的不恢复余数阵列除法器的逻辑 原理图。其中
首先介绍可控加法/减法(CAS)单 元,它将用于并行除法流水逻辑阵 列中,它有四个输出端和四个输 入端。当输入线P=0时,CAS作加 法运算;当P=1时,CAS作减法运 算。逻辑结构图 如图示
CAS单元的输入与输出的关系可用如下一组逻辑方程来表示:
Si=Ai⊕ (Bi⊕ P)⊕ Ci
Ci+1=(Ai+Ci)(Bi⊕ P)+AiCi
这说明,第i步除数的余数ri=2ri-1-y若为负,要求得下一 步的新余数ri+1,不必恢复余数,只要将ri左移一位(乘2) 再加上y即得ri+1 ,然后再由ri+1的正负决定上商值。
例2 x=0.1001, y=0.1011 ,用加减交替法求x/y。
解:[x]原=[x]补=x=0.1001, [y]补=0.1011, [-y]补=1.0101
(2)余数左移一位,上商,余数与除数同号,商1,下次减 除数,求下位商。余数与除数异号,商0,下次加除数,求 下位商;
(3)重复步骤(2),包括符号位在内,共做n+1步。
例3 x=+0.1001, y=+0.1011,求[xy]补
解: [x]补=0.1001 , [y]补=0.1011 [-y]补=1.0101
1.补码加减交替法算法
在补码一位除法中也必须比较被除数(余数)和除数的大 小,并根据比较的结果上商。令外,未了避免溢出,商的绝 对值不能大于1,即被除数的绝对值一定要小于除数的绝对 值。
补码加减交替法的算法规则如下:
(1) 求第一位商要判2数符号的同异,被除数与除数同号, 被除数减除数;被除数与除数异号,被除数加除数。
单元之间的互连是用n=3的阵列来表示的。这里被除数x是
一个6位的小数(双倍长度值):
x=0.x1x2x3x4x5x6 它是由顶部一行和最右边的对角线上的垂直输入线来提供的。
除数y是一个3位的小数:
y=0.y1y2y3
它沿对角线方向进入这个阵列。这是因为,在除法中所需要的 部分余数的左移,可以用下列等效的操作来代替:即让余数保 持固定,而将除数沿对角线右移。
x2-(1ry0)
被除数小于除数,商0 除数右移1位,减除数,商1
2-2y 除r1 数右移得1位余,减数除r1 数,商1
2-3y除r数2 右移1位得,余不数减r除2 数,商0
2-4y 除r3数右移得1余位数,减r3除数,商1
-0.0 0 0 0 0 0 0 1
r4
得余数r4
得x÷y的商q=0.1101,余数为r=0.00000001。
商的符号运算qf=xf⊕yf与原码乘法一样,用模2求和得到。
商的数值部分的运算,实质上是两个正数求商的运算。根据我们
所熟知的十进制除法运算方法,很容易得到二进制数的除法运算
方法,所不同的只是在二进制中,商的每一位不是“1”就是“0”,其 运算法则更简单一些。
下面仅讨论数值部分的运算。由于定点数的绝对值小于1,如 果被除数大于或等于除数.则商就大于或等于 1,因而会产 生溢出,这是不允许的.因此在执行除法以前,先要判别是 否溢出,不溢出时才执行除法运算,否则除法就不进行,并 由程序进行处理 .判别溢出的万法是被除数减去除数,若差 为正,即最高位有进位输出就表示溢出 .
1. 恢复余数法
事实上,机器的运算过程和人毕竟不同,人会心算,一看就 知道够不够减。但机器却不会心算,必须先作减法,若余数 为正,才知道够减;若余数为负,才知道不够减。不够减时 必须恢复原来的余数,以便再继续往下运算。这种方法称 为恢复余数法。要恢复原来的余数,只要当前的余数加上 除数即可。
例1 x=0.1001, y=0.1011,用恢复余数发求xy。
解:[x]补=[x]补=0.1001 [y]补=0.1011 [-y]补=1.0101
被除数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 1.0 0 1 0
0
+[-y]补 1 1.0 1 0 1 0 0.0 1 1 1