日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CRC循环校验码原理及计算举例

發布時間:2024/4/17 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CRC循环校验码原理及计算举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

循環冗余校驗碼(CRC),簡稱循環碼,是一種常用的、具有檢錯、糾錯能力的校驗碼,在早期的通信中運用廣泛。通過某種數學運算來建立數據位和校驗位的約定關系。這種數學運算就是“模2除法”。這種編碼基本思想是將要傳送的信息M(X)表示為一個多項式L,用L除以一個預先確定的多項式G(X),得到的余式就是所需的循環冗余校驗碼,所以這種校驗又稱多項式校驗。理論上可以證明循環冗余校驗碼的檢錯能力有以下特點:①可檢測出所有奇數位錯;②可檢測出所有雙比特的錯;③可檢測出所有小于、等于校驗位長度的突發錯。

1.模2除法

先說下什么是“模2除法”,我們知道模2加減是不進位、不借位的加減法,比如1+1=0,1+0=1,101+011=110,等于每一位的異或運算,相同bit加減為0,不同bit加減則為1。模2除法同理,即當部分余數首位是1時商取1,反之商取0。然后每一位的減法運算是按位減,不產生借位。余數的位數一定要是比除數位數只能少一位,哪怕前面位是0,甚至是全為0(附帶好整除時)也都不能省略。舉例如下圖所示:

2.校驗位的生成

循環冗余校驗碼由信息碼n位和校驗碼k位構成。k位校驗位拼接在n位數據位后面,則n+k為CRC校驗碼的字長。n位信息位可以表示成為一個報文多項式M(x),最高冪次是x^(n-1)。 約定的生成多項式G(x)是一個k+1位的二進制數,最高冪次是x^k。 將報文多項式M(x)乘以x^k,即其對應的2進制序列左移k位后,模2除以G(x),得到的k位余數就是校驗位。將這些校驗位加在被除數上,作為實際發送的數據,則傳輸過程中如果不出錯,收端收到的數據一定是可以整除校驗位的,因為導致不能整除的余數已經在發送的時候被模2加在了被除數上。生成多項式必須是發送端和接收端都知道的信息,且最高位和最低位必須均為“1”。

3.計算舉例

下面通過一個例子來進一步解釋CRC的基本工作原理:
(1)假設約定的生成多項式為G(x)=x^4+x+1,則其二進制表示為10011,共5位,其中k=4。
(2)假設要發送數據序列的二進制為101011,共6位,則報文多項式為M(x)=x^5
+x^3+x+1。
(3)將報文多項式乘以x^k, 即乘以x^4, 生成M(x)*x^k = x^9 + x^7 +x^5 + x^4,表示為二進制則為1010110000,即等于在要發送的二進制數據后面加4個0,共10位。
(4)用生成多項式的二進制表示10011去除1010110000,按模2算法求得余數比特序列為0100(注意余數一定是k位的)。

(5)將余數添加到要發送的數據后面,得到真正要發送的數據的比特流:1010110100,其中前6位為原始數據,后4位為CRC校驗碼。
(6)接收端在接收到帶CRC校驗碼的數據后,如果數據在傳輸過程中沒有出錯,將一定能夠被相同的生成多項式G(x)除盡,如果數據在傳輸中出現錯誤,生成多項式G(x)去除后得到的結果肯定不為0。

總結

以上是生活随笔為你收集整理的CRC循环校验码原理及计算举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。