專利名稱:計算模數除法的余數的方法和裝置的制作方法
技術領域:
本發明涉及計算模數除法的余數的方法和裝置,和更具體而言,是關于計算模數除法的余數的非迭代技術。
大部分計算機系統要求整數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位)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依照本發明的技術,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日
發明者瞿東暉 申請人:朗迅科技公司