電腦體繫結構(三)——迴圈冗餘校正

來源:互聯網
上載者:User

    在校正碼體系中,有各種校正的方法:有同位、海明碼校正、迴圈冗餘校正。今天就跟大家共同探討一下常用的迴圈冗餘校正吧。

    迴圈冗餘校正(CRC,Cyclic Redundancy Check),是最常用的一種差錯校正碼,其特徵是資訊欄位和校正欄位的長度可以任意選定。已經被廣泛應用於網路通訊即磁碟儲存。    多項式:一個位元可以用一個多項式來表示,如1011 表示為 x3+x1+x0 。最高次冪n,可以轉為長度為n+1的位元。
    CRC編碼組成:在K位資訊碼後再拼接R位的校正碼,整個編碼長度為N位,因此,這種編碼又叫(N,K)碼。    產生多項式:編碼方程除以資訊碼的多項式,得到餘數多項式即為校正碼,解碼方程將接收到的資訊除以產生多項式,若餘數=0,則說明正確,反則,則傳輸出錯,餘數的大小即為錯誤位置。    校正碼的具體產生過程為:        ①假設發送資訊用資訊多項式C(X)表示,將C(x)左移R位,則可表示成C(x)*2的R次方,這樣C(x)的右邊就會空出R位,這就是校正碼的位置。        ②移位後的資訊 除以 產生多項式G(x)得到的餘數多項式,可轉為R位二進位。        ③將餘數嵌入到原資訊的後面。例如:資訊位為10100110 , 產生多項式為a(x)= x5+x4+x+1    則C(x)=a(x)* x5 = (x7+x5+x2+x)* x5  = x12+ x10 +x7+x6

 

    餘數為x4+x3 ,轉為二進位為11000,所以CRC碼為10100110110000 。以上方法是用多項式來解的,現在我們換用二進位方式來試試。    資訊位為10100110 , 產生多項式為a(x)= x5+x4+x+1。    則a(x)轉換為二進位為110011,資訊位左移 R位(即最高次冪+1=6位),即在資訊為後補5個0 ,得10100110000000,再除以a(x)轉換的110011,取R位餘數,即6位。然後將餘數嵌入到原資訊的後面 。看圖:

 餘數為110000,6位,正好,補充到資訊位的後面為:10100110110000,跟上面的方法結果一致。   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.