模2運算的原理 模2加法,模2減法,模2乘法,模2除法


2運算是一種二進制算法,CRC校驗技術中的核心部分,因此,我們在分析CRC算法之前,必須掌握模2運算的規則。與四則運算相同,模2運算也包括模2加、模2減、模2乘、模2除四種二進制運算。而且,模2運算也使用與四則運算相同的運算符,即“+”表示模2加,“-”表示模2減,“×”或“·”表示模2乘,“÷”或“/”表示模2除。與四則運算不同的是2運算不考慮進位和借位,即模2加法是不帶進位的二進制加法運算,模2減法是不帶借位的二進制減法運算。這樣,兩個二進制位相運算時,這兩個位的值就能確定運算結果,不受前一次運算的影響,也不對下一次造成影響。


2加法運算定義為:
0+0=0        0+1=1        1+0=1        1+1=0
例如0101+0011=0110,列豎式計算:
   0 1 0 1
0 0 1 1
──────
   0 1 1 0


2減法運算定義為:
0-0=0        0-1=1        1-0=1        1-1=0
例如0110-0011=0101,列豎式計算:
   0 1 1 0
0 0 1 1
──────
   0 1 0 1


2乘法運算定義為:
0×0=0        0×1=0        1×0=0        1×1=1
多位二進制模2乘法類似於普通意義上的多位二進制乘法,不同之處在於后者累加中間結果(或稱部分積)時采用帶進位的加法,而模2乘法對中間結果的處理方式采用的是模2加法。例如1011×101=100111,列豎式計算:
       1 0 1 1
     ×  1 0 1
    ──────
       1 0 1 1
    0 0 0 0

1 0 1 1
────────
1 0 0 1 1 1


2除法運算定義為:
0÷1=0        1÷1=1
多位二進制模2除法也類似於普通意義上的多位二進制除法,但是在如何確定商的問題上兩者采用不同的規則。后者按帶借位的二進制減法,根據余數減除數夠減與否確定商1還是商0,若夠減則商1,否則商0。多位模2除法采用模2減法,不帶借位的二進制減法,因此考慮余數夠減除數與否是沒有意義的。實際上,在CRC運算中,總能保證除數的首位為1,則模2除法運算的商是由余數首位與除數首位的模2除法運算結果確定

當余數位數與除數位數相同時,才進行異或運算,余數首位是1,商就是1,余數首位是0,商就是0。當已經除了幾位后,余數位數小於除數,商0,余數往右補一位,位數仍比除數少,則繼續商0,當余數位數和除數位數一樣時,商1,進行異或運算,得新的余數,以此至被除數最后一位。

因為除數首位總是1,按照模2 除法運算法則,那么余數首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列豎式計算:
               1 1 1 0
       ────────
1 0 1 1〕1 1 0 0 1 0 0
       1 0 1 1
      ──────
           1 1 1 1
         1 0 1 1
       ──────
             1 0 0 0
           1 0 1 1
         ──────
               0 1 1 0
            0 0 0 0
           ──────
                  1 1 0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM