crc校驗基本原理
crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼(序列),從而構成乙個總長為n=p+r位的二進位制序列;附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因此,通過檢查這一關係,就可以實現對資料正確性的檢驗。
crc檢驗碼的計算
設資訊欄位為k位,校驗欄位為r位,則碼字長度為n(n=k+r)。設雙方事先約定了乙個r次多項式g(x),則crc碼:
v(x)=a(x)g(x)=xrm(x)+r(x)
其中: m(x)為k次資訊多項式, r(x)為r-1次校驗多項式。
這裡r(x)對應的**即為冗餘碼,加在原資訊欄位後即形成crc碼。
r(x)的計算方法為:在k位資訊欄位的後面新增r個0,再除以g(x)對應的**序列,得到的餘數即為r(x)對應的**(應為r-1位;若不足,而在高位補0)。
迴圈冗餘檢驗
迴圈冗餘檢驗英文名稱為cyclical redundancy check,簡稱crc。它是利用多項式除法及餘數的原理來做錯誤檢測的。它將要傳送的資料位元序列當作乙個資訊多項式u(x)的係數,傳送時去除以約定的生成多項式g(x),得到乙個餘數多項式v(x),將餘數多項式加到資訊多項式之後傳送到接收端,接收端同樣用g(x)去除接收到的接收多項式r(x),進行計算,然後把計算結果與由生成多項式g(x)決定的固定序列比較,來檢測傳輸錯誤。由此可以看出其同時具有迴圈碼和冗餘碼的特徵,所以這種錯誤檢測方法叫迴圈冗餘校驗,編碼叫迴圈冗餘校驗碼。
理論上可以證明迴圈冗餘校驗碼的檢錯能力有以下特點:
(1)可檢測出所有奇數字錯。
(2)可檢測出所有雙位元的錯。
(3)可檢測出所有小於、等於校驗位長度的突發錯。
crc碼編碼
歸納起來有以下三步驟:
編碼電路有兩種方式:
1,資訊位由高位到低位的順序從迴圈移位暫存器體左側依次輸入,資訊位完全進入迴圈體後繼續輸入n−k−1個0,最後迴圈體中暫存器的值就是余式碼字;
圖1 左側序列輸入迴圈移位暫存器體
2,資訊位由高位到低位的順序從迴圈移位暫存器體右側依次輸入,資訊位完全進入迴圈體後暫存器的值就是余式碼字。
圖2 右側序列輸入迴圈移位暫存器體
注:1,移位暫存器迴圈體中余式碼字低位在左側,高位在右側。
crc碼校驗
crc可以檢出奇數個錯誤 差錯檢測和糾正技術
差錯檢測和糾正技術 資料在傳輸的過程中難免會出現差錯 比如經過路由 時 因此我們需要一些差錯檢測和糾正技術來檢測資料中的差錯並糾正,使接收方收到正確的資料,也避免傳送方對資料進行重傳。下圖是差錯檢測和糾正的場景示意圖。在傳送結點為了保護資料中位元免受差錯,使用差錯檢測和糾正位元 error dete...
C 程式設計(三) 一組整數輸出奇數
程式頭部注釋開始 作 者 劉鎮 完成日期 2012 年 09 月 28 日 版 本 號 3.003 對任務及求解方法的描述部分 輸入描述 問題描述 輸入一組整數,輸出所有的奇數 程式輸出 程式頭部的注釋結束 using system using system.collections.generic ...
第16周Problem D 指標引出奇數因子
問題及 檔名稱 numbers.cpp 作 者 單昕昕 完成日期 2014年12月11日 版 本 號 v1.0 問題描述 編寫函式 int fun int x,int pp 其功能是,求出x的所有奇數因子,並按照從小到大的順序放在pp指向的記憶體中,函式返回值為這些整數的個數。若x的值為30,陣列中...