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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

常见的数据校验方式(奇偶,累加,CRC校验)

發(fā)布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见的数据校验方式(奇偶,累加,CRC校验) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

校驗就是在通訊數(shù)據(jù)的后面附加一些信息,通過這些附加的信息來判斷接收到的數(shù)據(jù)是否和發(fā)送出去的數(shù)據(jù)相同,數(shù)據(jù)是否準確無誤的發(fā)送到接收端。常見的校驗方式有奇偶校驗,累加校驗,CRC校驗(多項式校驗)。

奇偶校驗

通過傳輸數(shù)據(jù)(二進制)中“1”的個數(shù)是奇數(shù)還是偶數(shù)作為判斷依據(jù),分為奇校驗和偶校驗。

  • 奇校驗:如果以傳輸數(shù)據(jù)中1的個數(shù)是奇數(shù)為依據(jù),則是奇校驗;
  • 偶校驗:如果以傳輸數(shù)據(jù)中1的個數(shù)是偶數(shù)為依據(jù),則是偶校驗;
  • 例:a.若發(fā)送數(shù)據(jù)為8b’0000_0011時,數(shù)據(jù)中有兩個1,則校驗位為1,實際發(fā)送數(shù)據(jù)為8’b0000_0011_1,保證發(fā)送數(shù)據(jù)中1的個數(shù)為奇數(shù);b.若發(fā)送數(shù)據(jù)為8’b0000_0111時,數(shù)據(jù)中有3個1,則校驗位為0,實際發(fā)送數(shù)據(jù)不變,8’b0000_0111_0;偶校驗與奇校驗類似。

    局限性:奇偶校驗?zāi)軝z測傳輸數(shù)據(jù)中奇數(shù)位錯誤,不能檢測偶數(shù)位錯誤。奇偶校驗只能檢測出誤,無法確定錯誤發(fā)生具體是哪一位。

    累加校驗

    累加和校驗的實現(xiàn)方式有多重,最常用的一種是在一次通訊數(shù)據(jù)包的最后加入一個字節(jié)的校驗數(shù)據(jù)。這個字節(jié)內(nèi)容為數(shù)據(jù)包中全部數(shù)據(jù)的忽略進位的按字節(jié)累加和。

    比如要傳輸?shù)臄?shù)據(jù)為:1,2,3;

    加上校驗和后的數(shù)據(jù)為:1,2,3,6

    6為前三個字節(jié)的校驗和,接收方收到全部數(shù)據(jù)后對前三個數(shù)據(jù)進行同樣的累加計算,如果累加后與最后一個字節(jié)相同的話就認為傳輸數(shù)據(jù)無誤。

    局限性:累加和校驗實現(xiàn)簡單,被廣泛應(yīng)用。這種方式的檢錯能力一般,對單字節(jié)校驗和有約1/256的誤判率。

    CRC校驗
    CRC校驗即循環(huán)冗余校驗(Cyclic Redundancy Check),是一種基于數(shù)據(jù)計算的校驗碼。發(fā)送數(shù)據(jù)被看做是一個多項式的系數(shù),假設(shè)發(fā)送數(shù)據(jù)為bn-1bn-2…b1b0(其中bi為0或1),則其對于的多項式為:bn-1Xn-1+bn-2Xn-2+…b1X+b0。例如數(shù)據(jù)1101對應(yīng)多項式為X3+X2+1。CRC校驗為在k位信息碼后再拼接r位的校驗碼,報文長度為n位,因此這種編碼又叫作(n,k)碼。

    CRC校驗碼過程

    1.要發(fā)送的k位數(shù)據(jù)對應(yīng)一個k-1次的多項式K(x)。

    2.發(fā)送方和接收方約定一個生成多項式G(x),設(shè)該生產(chǎn)多項式的最高次冪為r(多項式的最高次冪比多項式位數(shù)少1)。

    3.在發(fā)送數(shù)據(jù)的末尾添加r個0,則其對應(yīng)的多項式M(x)=XrK(x)(發(fā)送數(shù)據(jù)左移r位)。

    4.用M(x)除以G(x),采用模2除法*,得到商Q(x),余式R(x),則M(x)=Q(x)*G(x)+R(x)。

    5.令T(x)=M(x)+R(x),T(x)所對應(yīng)的數(shù)據(jù)是在原數(shù)據(jù)塊的末尾加上余式對應(yīng)的數(shù)據(jù)。

    6.發(fā)送端發(fā)送T(x)。

    7.接收端收到數(shù)據(jù)T(x),將T’(x)除以G(x),若余式為0,則認為傳輸過程中沒有發(fā)生錯誤,接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)相同。反之,則數(shù)據(jù)發(fā)送過程中出現(xiàn)錯誤。

    CRC校驗原理

    對于一個給定的(n,k)碼,可以證明,存在一個最高次冪為n=k+r的多項式M(x),存在且僅存在一個r次多項式G(x),使得M(x)=xr*K(x)+G(x)。(即對于指定長度的信息碼和CRC校驗碼,生成碼G(x)具有唯一性)。發(fā)送方通過指定G(x)產(chǎn)生r位的CRC校驗碼,接收方則通過該G(x)來驗證收到的報文碼的CRC校驗碼是否為0。假設(shè)發(fā)送信息的多項式C(x)表示,將C(x)左移r位,則可以表示為C(x)*2r,這樣C(x)的右邊就會空出r位校驗碼的位置,做模2除,C(x)*2r/G(x),得到的余數(shù)R就是校驗碼,發(fā)送數(shù)據(jù)的CRC編碼是C(x)*2r+R,驗證接收到的報文編碼是否正確,依然是使用模2除法,C(x)*2r+R/G(x)。

    模2減法

    相對于普通的算術(shù)減法,主要區(qū)別在模2減法不做錯位處理。即:0-0=0;0-1=1;1-0=1;1-1=0;可以看出模2減法與相同位異或進行運算結(jié)果相同。補:模2加法結(jié)果同樣是相應(yīng)位異或運算。

    模2除法
    相對于普通的算法除法,主要區(qū)別在于模2除法即不向上位錯位,也不比較除數(shù)和被除數(shù)相同為數(shù)值的大小,只要以相同位數(shù)進行相除即可。可參考下面例子。

    ?

    CRC生成多項式滿足條件

    1.生成多項式的最高位和最低位必須為1。

    2.當被傳輸信息(CRC碼)任何一位發(fā)送錯誤時,被生成多項式做模2除后,應(yīng)該使余數(shù)不為0。

    3.不同位發(fā)送錯誤時,應(yīng)該使余數(shù)不同。

    常見的生成多項式:

    CRC-12(城域網(wǎng)):G(x)=X12+X11+X3+X2+X+1

    CRC-16(廣域網(wǎng)):G(x)=X16+X15+X2+1

    CRC-CCITT:?????? G(x)=X16+X12+X5+1

    CRC-32(局域網(wǎng)):G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1

    CRC校驗檢錯能力/應(yīng)用

    檢錯能力:全部單個bit錯誤,全部離散的二位錯,全部奇數(shù)個錯誤,全部長度小于或等于K的突發(fā)錯。(K為生成多項式的最高冪次)

    以1-(1/2)K-1的概率檢出長度為K+1位的突發(fā)錯。

    應(yīng)用:因CRC檢錯能力強,開銷小,易于用編碼器及檢測電路實現(xiàn),從性能和開銷上考慮均優(yōu)奇偶校驗和累加校驗。在數(shù)據(jù)存儲和數(shù)據(jù)通訊領(lǐng)域,多用CRC校驗。

    參考資料:

    計算機網(wǎng)絡(luò)——循環(huán)冗余校驗碼_何處秋風(fēng)悲畫扇的博客-CSDN博客_crc校驗碼

    CRC校驗碼原理、實例、手動計算 - 步孤天 - 博客園

    一文講透CRC校驗碼-附贈C語言實例 - 云+社區(qū) - 騰訊云

    CRC校驗詳解(附代碼示例)_fengwang0301的博客-CSDN博客_crc校驗

    總結(jié)

    以上是生活随笔為你收集整理的常见的数据校验方式(奇偶,累加,CRC校验)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。