CRC編碼
- CRC編碼是指循環冗余碼,英文名稱為Cyclical Redundancy Check,簡稱CRC,是一種可以檢查出多位錯誤的校驗碼。
- 校驗原理:在要發送的幀后邊附加上二進制數,發送給接收端,接收端接到數據幀后根據特定的位串進行去余數操作,如果結果沒有余數,說明正確,否則說明數據出現錯誤。
- CRC編碼的計算需要利用模2除法
- 校驗碼的位數比位串的位數少一位
模2除法
如果被除數首位是1,則商1,否則商0,商0的時候,0*除數每個位都為0 ,商1的時候,把除數原封不動的寫下來。然后,與計算出來的結果進行異或運算,00=1,11=1,01=0,10=0
位串的確定
一般題目都會給一個生成多項式,比如G(x)=x4+x2+x+1。位串的確定也很簡單,如上式,1=x的0次方,x=x的一次方,x的二次方也有,x的三次方沒有,x的四次方有,用二進制表示,x的三次方不存在,則補0,存在的位都為1,此時,位串就是10110。
CRC的編碼過程
- 根據生成多項式確定位串,
- 根據位串確定校驗碼的位數(位串長度-1)
- 把要發送的數據后面補上和校驗碼長度相同的0
- 要發送的數據和位串進行模2除法運算,位串是除數
- 算出余數即為校驗碼
- 用校驗碼替換掉第3步補的0 即為加密后的數據
例題
-
確定位串10111
-
用1001110111010000(后四個0是補位的)與10111做模2除法運算
-
算出來的余數1100替換掉第二步的后四個零,得1001110111011100,所以選A