軟考網工痛點分析之三 CRC迴圈冗餘校正

來源:互聯網
上載者:User

在資料轉送的過程中,不可避免會出現差錯,為判斷一個資料區塊中是否存在傳輸錯誤,發送方可在資料區塊中加入一些冗餘資訊,使接收方可通過這些冗餘資訊判斷傳輸是否出錯,這些加入的冗餘資訊稱為差錯編碼。

差錯編碼分為檢錯碼和錯誤修正碼。
檢錯碼只能讓接收方判斷資料區塊是否有錯,但無法確認錯誤的位置,主要有同位碼和CRC迴圈冗餘碼。
錯誤修正碼不僅能發現錯誤,而且能糾正錯誤,主要是海明碼。由於錯誤修正碼開銷較大,所以不適合於電腦通訊。在電腦通訊中主要使用檢錯重發方法,主要使用的是檢錯碼,其中CRC是一種能力相當強的檢錯碼,並且實現編碼和檢錯的電路比較簡單,因而得到了廣泛的應用。

CRC編碼主要用於資料連結層,它的基本思想將二進位位串看成係數為0或1的多項式。一個n位的幀被看成是n-1次多項式的係數列表。最左邊是xn-1項的係數,接著是xn-2項的係數,依此類推,直到X0項的係數。如位元11100011可以表示為多項式X7+X6+X5+X+1。同樣的,多項式X4+ X+1,可以表示為位元10011。


假設發送方要發送的資料幀是1010101010,在進行CRC編碼時,發送方和接收方必須事先商定一個產生多項式,如X4+ X+1,對應的位元為10011,其最高階為4,則在幀1010101010後面附加4個0,成為10101010100000。
用10101010100000除以10011,得到的餘數就是CRC校正碼。

650) this.width=650;" title="001.jpg" src="http://www.bkjia.com/uploads/allimg/131227/1R144ER-0.jpg" />

這個除法用到的是異或運算,基本規則是兩個相同的數相除,其結果是0,兩個不同的數相除,其結果是1。最終得到的CRC校正碼為0100產生多項式的最高階為幾,就可以得到一個幾位的CRC校正碼),然後將10101010100000用模2減法實際上也是異或運算)減去CRC校正碼0100,就得到了最終實際要傳輸的資料幀10101010100100。

大家可以自己練習一下這道考題:

若資訊碼字為11100011,產生多項式 GX)=X5+X4+X+1,則計算出的 CRC 校正碼為 16) 。
    16)A.01101    B.11010    C.001101    D.0011010

本文出自 “一壺濁酒” 部落格,轉載請與作者聯絡!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.