您好,登錄后才能下訂單哦!
這篇文章主要介紹了C++中CRC校驗的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
CRC:(循環冗余校驗)
循環冗余校驗是數據通信領域中最常用的一種差錯校驗碼,主要用來檢測或校驗數據傳輸或者保存后可能出現的錯誤。其特征是信息字段和校驗字段的長度可以任意選定。
工作原理:
CRC檢錯方法的工作原理可以從發送端與接收端兩個方面進行描述。
1)發送端將發送數據比特序列當作一個多項式f(x),用雙方預先約定的生成多項式G(x)去除,求得一個余數多項式R(x)。將余數多項式加到數據多項式之后,一起發送到接收端。
2)接收端用同樣的生成多項式G(x)去除接收到的數據多項式f'(x),得到計算余數R'(x)。如果計算余數多項式R'(x)與接收余數多項式R(x)相同,表示傳輸無差錯;否則,表示傳輸有差錯,通知發送端重傳數據,直至正確為止。
eg:
1)發送數據比特序列為:f(x)=110011
2)生成多項式比特序列為:G(x)=11001 (N=5,k=4)
3)將發送數據比特序列乘以2的4次方,即產生的乘積為:1100110000
4)將乘積用生成多項式比特序列去除,按模2算法求得余數為:1001
5)將余數比特序列加到乘積中得:
1 1 0 0 1 1 + 1 0 0 1 = 1 1 0 0 1 1 1 0 0 1
6)如果在數據傳輸過程中沒有發送錯誤,接收端收到的帶有CRC校驗碼的數據比特序列一定能被相同的生成多項式整除:
CRC的檢錯能力:
1)能夠檢查出全部離散的1位錯。
2)能夠檢查出全部離散的2位錯。
3)能夠檢查出全部奇數錯。
4)能夠檢查出全部長度小于或等于k位的突發錯。
5)能以[1-(1/2)^(k-1)]的概率檢查出長度為k+1位的突發錯。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++中CRC校驗的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。