專利名稱:計(jì)算模數(shù)除法的余數(shù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算模數(shù)除法的余數(shù)的方法和裝置,和更具體而言,是關(guān)于計(jì)算模數(shù)除法的余數(shù)的非迭代技術(shù)。
大部分計(jì)算機(jī)系統(tǒng)要求整數(shù)m的模數(shù)值n,一般寫為m mod n。m mod n運(yùn)算用在一些計(jì)算機(jī)處理中,例如,地址產(chǎn)生,通訊信道負(fù)載平衡,計(jì)算機(jī)圖形學(xué),電話交換和電話傳輸,分組交換和傳輸,和數(shù)字消息編碼/譯碼。因此,接收整數(shù)m和n和產(chǎn)生m mod n的例程是有用的計(jì)算機(jī)工具。
傳統(tǒng)的計(jì)算機(jī)模數(shù)除法余數(shù)的方法是迭代算法ND=Q+RD------------(1)]]>這里N是被除法,D是除數(shù),Q是商,R是余數(shù),和0≤R<D。
假設(shè)Q是n位正整數(shù),Q的值能被表示為二進(jìn)制位的和Q=Σj=0n-1Qj·2j----------(2)]]>這里Qj是Q的第j位,對所有的j,Qj={0,1}傳統(tǒng)的迭代算法開始于初始化R為N,即,R(n)=N和初始化Qn=1,這是由于N是正整數(shù),對于j=(n-1)至j=0,傳統(tǒng)的算法迭代地計(jì)算R(j)和Qj。對于用n位正整數(shù)D除n位正整數(shù)N產(chǎn)生n位正商Q和n位正余數(shù)R的完整算法如
圖1所示。
傳統(tǒng)的迭代算法的例子如下
例1設(shè)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(luò)-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(luò)-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(luò)-1=0-1=-1步B4 j<0?Yes步J1 R=R(-1)=R(0)+(1-Q0)·D=4+(1-1)7=4依照傳統(tǒng)的迭代算法,如圖1和例1所示的,25 mod 7的余數(shù)正確地計(jì)算為4。
確定模數(shù)除法的余數(shù)的傳統(tǒng)的迭代算法是一般目的方法,其中任何兩個(gè)正整數(shù)能被輸入作為N和D。然而,如例1所示,傳統(tǒng)的迭代算法由于迭代的性質(zhì)需要大量的計(jì)算。例如,如果D是具有值為D=2n-1的n位整數(shù)和n為小于或等于(D-1)2的任何正整數(shù),即n為最大是2n位整數(shù),傳統(tǒng)的迭代方法需要6n次的條件測試,2n次的乘法(或移位)和2n次加法。因此整個(gè)運(yùn)算次數(shù)需要10n,還不包括任何賦值操作。
本發(fā)明目的在于提供計(jì)算模數(shù)除法余數(shù)的方法和裝置。本發(fā)明是提供計(jì)算模數(shù)除法的余數(shù)的非迭代技術(shù)。和相同計(jì)算的傳統(tǒng)迭代技術(shù)相比,本發(fā)明需要顯著少的運(yùn)算。進(jìn)而,本發(fā)明所需計(jì)算次數(shù)不依賴于模數(shù)運(yùn)算除數(shù)的位數(shù)。
本發(fā)明的非迭代技術(shù)的兩個(gè)要求是,除數(shù)D的值應(yīng)當(dāng)?shù)扔?n-1(這里n是除數(shù)D的位數(shù))和被除數(shù)N的值應(yīng)當(dāng)小于或等于(D-1)2,但大于或等于0。
因?yàn)樯鲜鲈O(shè)置的兩個(gè)限制是里德—索絡(luò)蒙編碼的基本限制,本發(fā)明在實(shí)現(xiàn)里德—索絡(luò)蒙編碼的應(yīng)用中極為有用。里德—索絡(luò)蒙編碼涉及了伽羅瓦域的代數(shù)運(yùn)算。里德—索絡(luò)蒙編碼是在數(shù)據(jù)通訊內(nèi)經(jīng)常使用的前向糾錯(cuò)編碼類型。在里德—索絡(luò)蒙編碼中,本發(fā)明技術(shù)的兩個(gè)條件均滿足并且本發(fā)明的算法極大地改進(jìn)了里德—索絡(luò)蒙編碼速度。特別是,本發(fā)明比帶有特殊指令支持迭代除法的16位定點(diǎn)數(shù)字信號處理器的傳統(tǒng)迭代算法至少快四倍。進(jìn)而,如果16位定點(diǎn)DSP沒有專門的除法指令,本發(fā)明的算法比傳統(tǒng)迭代算法至少快12倍。
圖1示出了確定模數(shù)除法余數(shù)的傳統(tǒng)迭代算法的流程圖。
圖2示出了本發(fā)明實(shí)施例的硬件安排。
圖3示出了確定模數(shù)除法余數(shù)的本發(fā)明技術(shù)的流程圖。
圖2示出了本發(fā)明的一個(gè)實(shí)施例的裝置。特別是,圖2示出了編碼器10,它包括了執(zhí)行本發(fā)明算法的處理單元12,執(zhí)行本發(fā)明算法的處理單元12通過制造部件14或通過傳送信號20接收計(jì)算機(jī)程序以執(zhí)行本發(fā)明的算法。制造部件14除了計(jì)算機(jī)程序18以外還包括介質(zhì)16。
處理單元12可以是任何模擬或數(shù)字處理器,和可編程的以完成本發(fā)明的算法的硬件或軟件,處理單元12可以是一般用途處理器,數(shù)字處理器(DSP),算術(shù)邏輯單元(ALU),或任何其它處理元件,是離散的或是集成的,只要能執(zhí)行下述的算法。編碼器10可以是任何類型的編碼器,它包括處理單元12,例如,是里德—索絡(luò)蒙編碼器。
處理單元12執(zhí)行計(jì)算模數(shù)除法的余數(shù)的非迭代技術(shù),由處理單元12執(zhí)行的計(jì)算次數(shù)不依賴于模數(shù)運(yùn)算中除數(shù)的位數(shù)。本發(fā)明非迭代算法的兩個(gè)要求是,除數(shù)D的值應(yīng)當(dāng)為2n-1(這里n是除數(shù)D的位數(shù))和被除數(shù)N的值應(yīng)小于或等于(D-1)2,但大于或等于0。如果上述的兩個(gè)條件都滿足,M mod D的余數(shù)R就由被除數(shù)N的較高n/2位和較低n/2位的和去產(chǎn)生余數(shù)R。上述兩個(gè)條件能使處理單元12比傳統(tǒng)迭代技術(shù)完成相同計(jì)算的顯著少的運(yùn)算去確定模數(shù)除法運(yùn)算的余數(shù)。
現(xiàn)詳細(xì)描述本發(fā)明的算法。
對于給定的被除數(shù)N和除數(shù)D,計(jì)算N/D給出商Q和余數(shù)R,這兩個(gè)量的關(guān)系是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))的商和余數(shù)并且等式7給出了Q,R和Q’,R’之間的關(guān)系,相加Q’和R’給出 等式8表明Q’和R’的和能等于R或R+D,給出的R是如等式3所示的小于D的非負(fù)整數(shù),通過比較R’和Q’的和與D可以求得R 如果N(mod(D+1))的商Q’和余數(shù)R’可求出,N(modD)的余數(shù)可以由等式(9)獲得。給出了上述結(jié)果,現(xiàn)在的問題是,是否有有效的方法計(jì)算N(mod(D+1))的商和余數(shù),假定D=2n-1, 這里aj是N的第j位,對于所有的j,aj={0,1}那末,(D+1)=2n,這個(gè)事實(shí)產(chǎn)生了快速求得Q’和R’的方法。設(shè)N≤(D-1)2意味著N小于或等于2n位。N的二進(jì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并且設(shè)2n=(D+1),等式6中的商Q’和余數(shù)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位構(gòu)成的數(shù)字。
本發(fā)明的流程圖如圖3所示,結(jié)合圖3的流程圖解釋例2。
例2如果N=25和n=3條件1D=2n-1=7真條件20≤N≤(D-1)20≤25≤36真設(shè)N=25,D=7和n=3=>25 mod 7=4N=25被表示為2n位數(shù)字(帶前面所加的零是5位)011001步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依照本發(fā)明的技術(shù),25 mod 7的余數(shù)被正確地計(jì)算為4。比較本發(fā)明和傳統(tǒng)的迭代技術(shù),本發(fā)明僅需5次運(yùn)算就能確定余數(shù)R,這正如例2所示,而例1所示的傳統(tǒng)的迭狀技術(shù)需要21次運(yùn)算。
另一實(shí)例示出了本發(fā)明附加執(zhí)行步F’處理。
例3如果N=15和n=3條件1D=23-1=7=>真條件20≤N≤(D-1)20≤15≤36=>真設(shè)N=15,D=7,和n=3=>15 mod 7=1N=15被表示為2n位數(shù)字(帶有兩位被加入的前面的零為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進(jìn)而,依照本發(fā)明的技術(shù),15 mod 7的余數(shù)正確地被計(jì)算為1。
這就描述了本發(fā)明,很明顯,同一內(nèi)容可以用多種方式變化。這樣的變化并不視為脫離了本發(fā)明的精神和范圍,那些對本領(lǐng)域技術(shù)人員視為顯而易見的修改都包括在下述的權(quán)利要求范圍內(nèi)。
權(quán)利要求
1.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的計(jì)算機(jī)可執(zhí)行的方法,所說的方法包括當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),非迭代處理N mod D以產(chǎn)生余數(shù)R。
2.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的計(jì)算機(jī)可執(zhí)行的方法,所說的方法包括當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),執(zhí)行N mod D以產(chǎn)生余數(shù)R,這里產(chǎn)生余數(shù)R必要的一些處理操作不依賴于n。
3.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的計(jì)算機(jī)可執(zhí)行方法,所說方法包括當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),對被除數(shù)N的較高n/2位和較低n/2位求和以產(chǎn)生余數(shù)R。
4.權(quán)利要求1的計(jì)算機(jī)可執(zhí)行方法,進(jìn)而包括當(dāng)和大于除數(shù)D時(shí)從和中減去除數(shù)D以產(chǎn)生余數(shù)R的步驟。
5.權(quán)利要求2的計(jì)算機(jī)可執(zhí)行方法,進(jìn)而包括如果和大于除數(shù)D時(shí)從和中減去除數(shù)D以產(chǎn)生余數(shù)R的步驟。
6.權(quán)利要求3的計(jì)算機(jī)可執(zhí)行方法,進(jìn)而包括如果和大于除數(shù)D時(shí)從和中減去除數(shù)D以產(chǎn)生余數(shù)的步驟。
7.權(quán)利要求1的計(jì)算機(jī)可執(zhí)行方法,其中,n≥2。
8.權(quán)利要求2的計(jì)算機(jī)可執(zhí)行方法,其中,n≥2。
9.權(quán)利要求3的計(jì)算機(jī)可執(zhí)行方法,其中,n≥2。
10.權(quán)利要求7的計(jì)算機(jī)可執(zhí)行方法,其中,n≥3。
11.權(quán)利要求8的計(jì)算機(jī)可執(zhí)行方法,其中,n≥3。
12.權(quán)利要求9的計(jì)算機(jī)可執(zhí)行方法,其中,n≥3。
13.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的裝置,當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),所說裝置非迭代地處理N mod D以產(chǎn)生余數(shù)R。
14.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)的執(zhí)行模數(shù)除法的裝置,當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),所說裝置執(zhí)行N mod D以產(chǎn)生余數(shù)R,這里產(chǎn)生余數(shù)R必需的一些處理操作不依賴于n。
15.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)的執(zhí)行模數(shù)除法的裝置,當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),所說裝置對被除數(shù)N的較高n/2位和較低n/2位求和以產(chǎn)生余數(shù)R。
16.權(quán)利要求13的裝置,如果和大于除數(shù)D,所說裝置從和中減去除數(shù)D以產(chǎn)生余數(shù)R。
17.權(quán)利要求14的裝置,如果和大于除數(shù)D,所說裝置從和中減去除數(shù)D以產(chǎn)生余數(shù)R。
18.權(quán)利要求15的裝置,如果和大于除數(shù)D,所說裝置從和中減去除數(shù)D以產(chǎn)生余數(shù)R。
19.權(quán)利要求13的裝置,其中,n≥2。
20.權(quán)利要求14的裝置,其中,n≥2。
21.權(quán)利要求15的裝置,其中,n≥2。
22.權(quán)利要求19的裝置,其中,n≥3。
23.權(quán)利要求20的裝置,其中,n≥3。
24.權(quán)利要求21的裝置,其中,n≥3。
25.權(quán)利要求14的裝置,其中,所說裝置是里德—索絡(luò)蒙編碼器的部件。
26.權(quán)利要求15的裝置,其中,所說裝置是里德—索絡(luò)蒙編碼器的部件。
27.權(quán)利要求16的裝置,其中,所說裝置是里德—索絡(luò)蒙編碼器的部件。
28.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的計(jì)算機(jī)可讀介質(zhì)內(nèi)的計(jì)算機(jī)程序包括當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),對被除數(shù)N的較高n/2位和較低n/2位求和以產(chǎn)生余數(shù)R的求和代碼段。
29.權(quán)利要求28的計(jì)算機(jī)程序,進(jìn)一步包括如果和大于除數(shù)D,從和中減去除數(shù)D以產(chǎn)生余數(shù)R的減法代碼段。
30.權(quán)利要求28的計(jì)算機(jī)程序,其中,n≥2。
31.權(quán)利要求30的計(jì)算機(jī)程序,其中,n≥3。
32.使用被除數(shù)N和n位除數(shù)D產(chǎn)生余數(shù)R的執(zhí)行模數(shù)除法的計(jì)算機(jī)信號,所說計(jì)算機(jī)信號包括當(dāng)D=2n-1和0≤N≤(D-1)2時(shí),對被除數(shù)N的較高n/2位和較低n/2位求和以產(chǎn)生余數(shù)R的求和代碼段。
33.權(quán)利要求32的計(jì)算機(jī)信號,進(jìn)而包括如果和大于除數(shù)D,從和中減去除數(shù)D以產(chǎn)生余數(shù)R的減法代碼段。
34.權(quán)利要求32的計(jì)算機(jī)信號,其中,n≥2。
35.權(quán)利要求34的計(jì)算機(jī)信號,其中,n≥3。
全文摘要
一種用于計(jì)算模數(shù)除法余數(shù)的非迭代技術(shù),僅需比相同計(jì)算的傳統(tǒng)的迭代技術(shù)顯著少的運(yùn)算。在本發(fā)明中所需計(jì)算次數(shù)不依賴于在模數(shù)運(yùn)算中除數(shù)的位數(shù)。該非迭代技術(shù)的兩個(gè)基本要求是,除數(shù)D的值應(yīng)當(dāng)為文檔編號G06F17/10GK1275748SQ9910943
公開日2000年12月6日 申請日期1999年5月26日 優(yōu)先權(quán)日1999年5月26日
發(fā)明者瞿東暉 申請人:朗迅科技公司