计算模数除法的余数的方法和装置的制作方法

文档序号:6416623阅读:392来源:国知局
专利名称:计算模数除法的余数的方法和装置的制作方法
技术领域
本发明涉及计算模数除法的余数的方法和装置,和更具体而言,是关于计算模数除法的余数的非迭代技术。
大部分计算机系统要求整数m的模数值n,一般写为m mod n。m mod n运算用在一些计算机处理中,例如,地址产生,通讯信道负载平衡,计算机图形学,电话交换和电话传输,分组交换和传输,和数字消息编码/译码。因此,接收整数m和n和产生m mod n的例程是有用的计算机工具。
传统的计算机模数除法余数的方法是迭代算法ND=Q+RD------------(1)]]>这里N是被除法,D是除数,Q是商,R是余数,和0≤R<D。
假设Q是n位正整数,Q的值能被表示为二进制位的和Q=Σj=0n-1Qj·2j----------(2)]]>这里Qj是Q的第j位,对所有的j,Qj={0,1}传统的迭代算法开始于初始化R为N,即,R(n)=N和初始化Qn=1,这是由于N是正整数,对于j=(n-1)至j=0,传统的算法迭代地计算R(j)和Qj。对于用n位正整数D除n位正整数N产生n位正商Q和n位正余数R的完整算法如

图1所示。
传统的迭代算法的例子如下
例1设N=25.D=7和n=3=>25 mod 7=4步A1 R(3)=25,Q3=1,j=2步B1 j<0?No步C1 Q3=1?Yes步D1 R(2)=R(3)-D2J=25-(7)(4)=-3步E1 R(2)<0?Yes步F1 Qj=Q2=0步G1 j=j-1=2-1=1步B2 j<0?No步C2 Q2=1?No步H1 R(1)=R(2)+D2J=-3+(7)(2)=11步E2 R(1)<0?No步I1 Q1=1步G2 j=j-1=1-1=0步B3 j<0?No步C3 Q1=1?Yes步D2 R(0)=R(1)-D2J=11-(7)(1)=4步E3 R(0)<0?No步12 Q0=1步G3 j=j-1=0-1=-1步B4 j<0?Yes步J1 R=R(-1)=R(0)+(1-Q0)·D=4+(1-1)7=4依照传统的迭代算法,如图1和例1所示的,25 mod 7的余数正确地计算为4。
确定模数除法的余数的传统的迭代算法是一般目的方法,其中任何两个正整数能被输入作为N和D。然而,如例1所示,传统的迭代算法由于迭代的性质需要大量的计算。例如,如果D是具有值为D=2n-1的n位整数和n为小于或等于(D-1)2的任何正整数,即n为最大是2n位整数,传统的迭代方法需要6n次的条件测试,2n次的乘法(或移位)和2n次加法。因此整个运算次数需要10n,还不包括任何赋值操作。
本发明目的在于提供计算模数除法余数的方法和装置。本发明是提供计算模数除法的余数的非迭代技术。和相同计算的传统迭代技术相比,本发明需要显著少的运算。进而,本发明所需计算次数不依赖于模数运算除数的位数。
本发明的非迭代技术的两个要求是,除数D的值应当等于2n-1(这里n是除数D的位数)和被除数N的值应当小于或等于(D-1)2,但大于或等于0。
因为上述设置的两个限制是里德—索络蒙编码的基本限制,本发明在实现里德—索络蒙编码的应用中极为有用。里德—索络蒙编码涉及了伽罗瓦域的代数运算。里德—索络蒙编码是在数据通讯内经常使用的前向纠错编码类型。在里德—索络蒙编码中,本发明技术的两个条件均满足并且本发明的算法极大地改进了里德—索络蒙编码速度。特别是,本发明比带有特殊指令支持迭代除法的16位定点数字信号处理器的传统迭代算法至少快四倍。进而,如果16位定点DSP没有专门的除法指令,本发明的算法比传统迭代算法至少快12倍。
图1示出了确定模数除法余数的传统迭代算法的流程图。
图2示出了本发明实施例的硬件安排。
图3示出了确定模数除法余数的本发明技术的流程图。
图2示出了本发明的一个实施例的装置。特别是,图2示出了编码器10,它包括了执行本发明算法的处理单元12,执行本发明算法的处理单元12通过制造部件14或通过传送信号20接收计算机程序以执行本发明的算法。制造部件14除了计算机程序18以外还包括介质16。
处理单元12可以是任何模拟或数字处理器,和可编程的以完成本发明的算法的硬件或软件,处理单元12可以是一般用途处理器,数字处理器(DSP),算术逻辑单元(ALU),或任何其它处理元件,是离散的或是集成的,只要能执行下述的算法。编码器10可以是任何类型的编码器,它包括处理单元12,例如,是里德—索络蒙编码器。
处理单元12执行计算模数除法的余数的非迭代技术,由处理单元12执行的计算次数不依赖于模数运算中除数的位数。本发明非迭代算法的两个要求是,除数D的值应当为2n-1(这里n是除数D的位数)和被除数N的值应小于或等于(D-1)2,但大于或等于0。如果上述的两个条件都满足,M mod D的余数R就由被除数N的较高n/2位和较低n/2位的和去产生余数R。上述两个条件能使处理单元12比传统迭代技术完成相同计算的显著少的运算去确定模数除法运算的余数。
现详细描述本发明的算法。
对于给定的被除数N和除数D,计算N/D给出商Q和余数R,这两个量的关系是ND=Q+RD---------(3)]]>这里0≤R≤D重新排列上述等式给出(4)N=Q·D+R等式4能被写为
等式5能被简化为(6)N=Q′·(D+1)+R′这里
比较等式4和等式6就可以看出Q’和R’是N(mod(D+1))的商和余数并且等式7给出了Q,R和Q’,R’之间的关系,相加Q’和R’给出 等式8表明Q’和R’的和能等于R或R+D,给出的R是如等式3所示的小于D的非负整数,通过比较R’和Q’的和与D可以求得R 如果N(mod(D+1))的商Q’和余数R’可求出,N(modD)的余数可以由等式(9)获得。给出了上述结果,现在的问题是,是否有有效的方法计算N(mod(D+1))的商和余数,假定D=2n-1, 这里aj是N的第j位,对于所有的j,aj={0,1}那末,(D+1)=2n,这个事实产生了快速求得Q’和R’的方法。设N≤(D-1)2意味着N小于或等于2n位。N的二进制表示为N=(Σk=0n-1ak+n·2k)·2n+Σj=0n-1aj·2j-----(10)]]>这里Σk=0n-1ak+n·2k<2nandΣj=0n-1aj·2j<2n----------(11)]]>比较等式6和等式10并且设2n=(D+1),等式6中的商Q’和余数R’能被求得为
这里ak+n为N的(n+k)位,对于所有的k,ak+n={0,1}和 (12)
这里aj是N的第j位,对所有的j aj={0,1}等式(12)意味着N(mod(D+1))的商Q’和R’是由N的高和低n位构成的数字。
本发明的流程图如图3所示,结合图3的流程图解释例2。
例2如果N=25和n=3条件1D=2n-1=7真条件20≤N≤(D-1)20≤25≤36真设N=25,D=7和n=3=>25 mod 7=4N=25被表示为2n位数字(带前面所加的零是5位)011001步A’a=N的高位→a=011步B’b=N的低n位→b=001步C’c=a+b=100步D’c<D?Yes步E’N(mod D)=c=100=4依照本发明的技术,25 mod 7的余数被正确地计算为4。比较本发明和传统的迭代技术,本发明仅需5次运算就能确定余数R,这正如例2所示,而例1所示的传统的迭状技术需要21次运算。
另一实例示出了本发明附加执行步F’处理。
例3如果N=15和n=3条件1D=23-1=7=>真条件20≤N≤(D-1)20≤15≤36=>真设N=15,D=7,和n=3=>15 mod 7=1N=15被表示为2n位数字(带有两位被加入的前面的零为4位)
001111步A’a=N的高n位→a=001步B’b=N的低n位→b=111步C’c=a+b=1000步D’1000<0111?No步F’c=c-D=1000-0111=0001步E’N(mod D)=c=0001=1进而,依照本发明的技术,15 mod 7的余数正确地被计算为1。
这就描述了本发明,很明显,同一内容可以用多种方式变化。这样的变化并不视为脱离了本发明的精神和范围,那些对本领域技术人员视为显而易见的修改都包括在下述的权利要求范围内。
权利要求
1.使用被除数N和n位除数D产生余数R的执行模数除法的计算机可执行的方法,所说的方法包括当D=2n-1和0≤N≤(D-1)2时,非迭代处理N mod D以产生余数R。
2.使用被除数N和n位除数D产生余数R的执行模数除法的计算机可执行的方法,所说的方法包括当D=2n-1和0≤N≤(D-1)2时,执行N mod D以产生余数R,这里产生余数R必要的一些处理操作不依赖于n。
3.使用被除数N和n位除数D产生余数R的执行模数除法的计算机可执行方法,所说方法包括当D=2n-1和0≤N≤(D-1)2时,对被除数N的较高n/2位和较低n/2位求和以产生余数R。
4.权利要求1的计算机可执行方法,进而包括当和大于除数D时从和中减去除数D以产生余数R的步骤。
5.权利要求2的计算机可执行方法,进而包括如果和大于除数D时从和中减去除数D以产生余数R的步骤。
6.权利要求3的计算机可执行方法,进而包括如果和大于除数D时从和中减去除数D以产生余数的步骤。
7.权利要求1的计算机可执行方法,其中,n≥2。
8.权利要求2的计算机可执行方法,其中,n≥2。
9.权利要求3的计算机可执行方法,其中,n≥2。
10.权利要求7的计算机可执行方法,其中,n≥3。
11.权利要求8的计算机可执行方法,其中,n≥3。
12.权利要求9的计算机可执行方法,其中,n≥3。
13.使用被除数N和n位除数D产生余数R的执行模数除法的装置,当D=2n-1和0≤N≤(D-1)2时,所说装置非迭代地处理N mod D以产生余数R。
14.使用被除数N和n位除数D产生余数的执行模数除法的装置,当D=2n-1和0≤N≤(D-1)2时,所说装置执行N mod D以产生余数R,这里产生余数R必需的一些处理操作不依赖于n。
15.使用被除数N和n位除数D产生余数的执行模数除法的装置,当D=2n-1和0≤N≤(D-1)2时,所说装置对被除数N的较高n/2位和较低n/2位求和以产生余数R。
16.权利要求13的装置,如果和大于除数D,所说装置从和中减去除数D以产生余数R。
17.权利要求14的装置,如果和大于除数D,所说装置从和中减去除数D以产生余数R。
18.权利要求15的装置,如果和大于除数D,所说装置从和中减去除数D以产生余数R。
19.权利要求13的装置,其中,n≥2。
20.权利要求14的装置,其中,n≥2。
21.权利要求15的装置,其中,n≥2。
22.权利要求19的装置,其中,n≥3。
23.权利要求20的装置,其中,n≥3。
24.权利要求21的装置,其中,n≥3。
25.权利要求14的装置,其中,所说装置是里德—索络蒙编码器的部件。
26.权利要求15的装置,其中,所说装置是里德—索络蒙编码器的部件。
27.权利要求16的装置,其中,所说装置是里德—索络蒙编码器的部件。
28.使用被除数N和n位除数D产生余数R的执行模数除法的计算机可读介质内的计算机程序包括当D=2n-1和0≤N≤(D-1)2时,对被除数N的较高n/2位和较低n/2位求和以产生余数R的求和代码段。
29.权利要求28的计算机程序,进一步包括如果和大于除数D,从和中减去除数D以产生余数R的减法代码段。
30.权利要求28的计算机程序,其中,n≥2。
31.权利要求30的计算机程序,其中,n≥3。
32.使用被除数N和n位除数D产生余数R的执行模数除法的计算机信号,所说计算机信号包括当D=2n-1和0≤N≤(D-1)2时,对被除数N的较高n/2位和较低n/2位求和以产生余数R的求和代码段。
33.权利要求32的计算机信号,进而包括如果和大于除数D,从和中减去除数D以产生余数R的减法代码段。
34.权利要求32的计算机信号,其中,n≥2。
35.权利要求34的计算机信号,其中,n≥3。
全文摘要
一种用于计算模数除法余数的非迭代技术,仅需比相同计算的传统的迭代技术显著少的运算。在本发明中所需计算次数不依赖于在模数运算中除数的位数。该非迭代技术的两个基本要求是,除数D的值应当为文档编号G06F17/10GK1275748SQ9910943
公开日2000年12月6日 申请日期1999年5月26日 优先权日1999年5月26日
发明者瞿东晖 申请人:朗迅科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1