[教學] CRC(循環冗餘碼)長除法 教你如何算CRC長除法(附題目跟解法)

題目:

假設資料位元為10101010,生成多項式為x4+x2+x1+1 (10111)
問CRC碼以及加上CRC碼後的完整訊息為何? 

解法:(使用長除法解題)

步驟 1.

由於生成多項式x4+x2+x1+1 (10111) 的羃次為4 (因為最高 x4)
,故先在資料位元10101010的後面加上四個0 (0000) (若生成多項式是x3則補3個0的意思,此處是4,所以補4個0)

,得到被除數為101010100000


步驟 2.
以長除法求取101010100000除以生成多項式x4+x2+x1+1 (10111) 的餘數

 

CRC用的是二進位除法,不能化為十進位做減法運算,相減時

1-1=00-0=01-0=10-1=1(不要借位)  

等同XOR運算 數字相同=0 相異=1(重要)

 

XOR

結果

0

0

0

0

1

1

1

0

1

1

1

0

開始計算 

使用長除法取101010100000除以生成多項式 10111的餘數

長除法  

注意:第一個10101 不夠10111 減 還是可以做下來,因為他是等同於XOR

CRC碼為上述所求出的餘數1100,而完整訊息則是在原始的資料位元後面加上CRC碼,得到101010101100 ,只要收訊端有正確的接收到訊息,該訊息將能被生成多項式整除。

ANS: 10101010 1100

 驗算:101010101100再做一次長除法確實被10111整除 證明你剛剛算的沒有錯誤!

 

 

 

不知道這篇文章是不是有幫到你(妳)呢? 如果有幫助的話 在下面留個言感謝一下~是我發文的動力唷^^

文章標籤
創作者介紹

椿哥-分享之部落格

椿哥 發表在 痞客邦 PIXNET 留言(21) 人氣()


留言列表 (21)

發表留言
  • 悄悄話
  • 尤蜜蜜
  • hello 我想請問一下喔
    如果我反推 檢查data有沒有誤 但除出來的餘數 要如果知道哪一碼 換成10進制?
    ~~~^^ 謝謝
  • 欸都~~ "如果知道哪一碼忽然跑出10進制"
    那一句我看不是很明白@@
    我不懂你要問的意思 請你在解釋清楚的話我會更明白的 感謝您

    椿哥 於 2015/01/18 00:21 回覆

  • Yong
  • 謝謝你喔
  • 謝謝你的回覆^^

    椿哥 於 2015/01/18 00:19 回覆

  • kk
  • 非常清楚的解釋,感謝!
  • 感謝你的回覆!!^_^

    椿哥 於 2015/01/18 00:19 回覆

  • kyotc
  • 非常清楚的解釋~
    受教了=)
  • 霧喚
  • 感謝版大分享~很有收穫。
  • clyukimo
  • 謝謝喔
    不過這應該是基本型吧?
    我在網路上有看到變形的
  • louis
  • thx
  • 小白
  • 寫得不錯喔,簡單明瞭
  • 訪客
  • 感恩
  • 小葛
  • 說明得非常清楚! 謝謝!
  • ammy4567
  • 謝謝版主的分享
    簡單易懂 :)
  • 6789
  • 感謝
  • nono
  • 水喔
  • 奈奈
  • 請問為甚麼等同XOR
  • 雞腿
  • 超讚的 簡單明瞭
  • sos
  • 請問10111是怎麼算得的?
  • 路過
  • x4+x2+x1+1 (10111)
    因為x3沒有出現
    如果長成x4+x2+x1
    那就少了x3和最後一個1
    那二進位就是10110
  • 訪客
  • 感謝您
  • 訪客
  • 請問 多項式為x4+x2+x1+1 這是怎麼換算出來的?
  • 訪客
  • 請問該如何決定生成多項式的長度?
找更多相關文章與討論