介紹
多位二進制模2除法也類似於普通意義上的多位二進制除法,但是在如何確定商的問題上兩者採用不同的規則。後者按帶借位的二進制除法,根 據餘數減除數夠減與否確定商1還是商0,若夠減則商1,否則商0。多位模2除法採用模2減法,不帶借位的二進制減法,因此考慮餘數夠減除數與否是沒有意義 的。實際上,在CRC運算中,總能保證除數的首位為1,則模2除法運算的商是由余數首位與除數首位的模2除法運算結果確定。因為除數首位總是1,按照模2 除法運算法則,那么餘數首位是1就商1,是0就商0。
在下面的示例中,當餘數位數與除數位數相同時,才進行異或運算,餘數首位是1,商就是1,餘數首位是0,商就是0。當已經除了幾位後,餘數位數小於除數,商0,餘數往右補一位,位數仍比除數少,則繼續商0,當餘數位數和除數位數一樣時,商1,進行異或運算,得新的餘數,以此至被除數最後一位。
實例分析
例1
:1111000除以1101:
例2
被校驗的數據M(x)=1000,其選擇生成多項式為G(x)=x^3+x+1,該數據的循環冗餘校驗和應為多少?
G(x)=x^3+x+1對應的二進制數為1011,且G(x)中含3個項式,生成多項式為4位二進制,由CRC規則應該取(4-1)=3位(校驗和),所以可以預加上3位得到1000B*2^3=1000 000B;
1000 000B(被除數)對1011(除數)做模2除法,得到的餘數便是101B(即CRC校驗和),所以該數據的循環冗餘校驗後的數據應為1000 B+101B=1000101B。
具體說明
想知道模2除法,只需要知道什麼是異或運算就很容易算出。
計算機中,異或邏輯表示為: (記憶方法:同為0異為1)
1^1=0
0^0=0
1^0=1
0^1=1