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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CRC编码

發布時間:2025/3/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CRC编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、循環冗余碼校驗英文名稱為Cyclical Redundancy Check,簡稱CRC。
  它是利用除法及余數的原理來作錯誤偵測(Error Detecting)的。實際應用時,發送裝置計算出CRC值并隨數據一同發送給接收裝置,接收裝置對收到的數據重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數據通訊出現錯誤。
  根據應用環境與習慣的不同,CRC又可分為以下幾種標準:
  ①CRC-12碼;
  ②CRC-16碼;
  ③CRC-CCITT碼;
  ④CRC-32碼。
  CRC-12碼通常用來傳送6-bit字符串。
  CRC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。
  CRC-32碼大都被采用在一種稱為Point-to-Point的同步傳輸中。
  下面以最常用的CRC-16為例來說明其生成過程。
  CRC-16碼由兩個字節構成,在開始時CRC寄存器的每一位都預置為1,然后把CRC寄存器與8-bit的數據進行異或(異或:二進制運算 相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0),
  之后對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位后已經被移出CRC寄存器)如果為1,則把寄存器與預定義的多項式碼進行異或,否則如果LSB為零,則無需進行異或。重復上述的由高至低的移位8次,第一個8-bit數據處理完畢,用此時CRC寄存器的值與下一個8-bit數據異或并進行如前一個數據似的8次移位。所有的字符處理完成后CRC寄存器內的值即為最終的CRC值。
  下面為CRC的計算過程:
  1.設置CRC寄存器,并給其賦值FFFF(hex)。
  2.將數據的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器。
  3.CRC寄存器向右移一位,MSB補零,移出并檢查LSB。
  4.如果LSB為0,重復第三步;若LSB為1,CRC寄存器與多項式碼相異或。
  5.重復第3與第4步直到8次移位全部完成。此時一個8-bit數據處理完畢。
  6.重復第2至第5步直到所有數據全部處理完成。
  7.最終CRC寄存器的內容即為CRC值。
  常用的CRC循環冗余校驗標準多項式如下:?
  CRC(16位) = X16+X15+X2+1?
  CRC(CCITT) = X16+X12 +X5+1?
  CRC(32位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+X5+X4+X2+X+1?
  以CRC(16位)多項式為例,其對應校驗二進制位列為1 1000 0000 0000 0101。?
  注意:這兒列出的標準校驗多項式都含有(X+1)的多項式因子;各多項式的系數均為二進制數,所涉及的四則運算仍遵循對二取模的運算規則。?
  (注:對二取模的四則運算指參與運算的兩個二進制數各位之間凡涉及加減運算時均進行XOR異或運算,即:1 XOR 1=0,0 XOR 0=0,1 XOR 0=1,0 XOR 1=1,即相同為0,不同為1)

轉載于:https://www.cnblogs.com/zr520/p/5309687.html

總結

以上是生活随笔為你收集整理的CRC编码的全部內容,希望文章能夠幫你解決所遇到的問題。

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