回覆列表
  • 1 # 雁塔菜農

    CRC最基礎的運算就是移位運算和異或運算。

    由於硬體可以完成CRC運算,即固化CRC演算法,故實際運算又被分成左移或右移運算,即CRC成員中的“CRC方向”。

    CRC的成員有:

    CRCn:常見的有CRC4,CRC8,CRC16,CRC32,CRC64。

    權值:即多項式poly,它是CRC運算中的“金鑰”,即演算法的核心。

    由於上面說過CRC演算法分為左移或右移運算,故當左移運算時,權值的最低位D0為“1”時,CRC可逆,否則CRC不可逆。

    當右移運算時,權值的最高位Dn-1為“1”時,CRC可逆。否則CRC不可逆。

    通俗地說,多項式中含“+1”或“+X0”時,CRC可逆。否則CRC不可逆。

    CRC方向:開始已經論述,分為左移或右移運算。

    CRC初值:即CRC運算的初始值init,它只對第一個CRC待校驗資料作用,並與其滿足交換律。

    CRC出值:即CRC運算過程結束後,它對最後一個運算過程的中間結果異或後的輸出值xorout。

    CRC結果:即CRC運算的最終校驗和。

    CRC表格:與CRC初值或CRC出值無關,並對連續的待校驗資料(例如00-0xFF)進行CRC運算的校驗和結果流。

    CRC簡寫式:它包含了CRCn,CRC權值,CRC方向,CRC初值和CRC出值。它是CRC運算中最為完整的表述。

    CRC演算法:它至少有五種演算法:

    1.CRC移位演算法。它沒有CRC表格,主要是對CRC權值的移位和異或運算,故相對速度最慢。

    2.CRC大表和單表演算法,其中大表內有256個查表資料單元。只有一個CRC表格。

    3.CRC小表和單表演算法,其中小表內只有16個查表資料單元。只有一個CRC表格。它比大表演算法慢一倍。

    4.CRC大表和雙表組合演算法,它比演算法2多了一個CRC表格,但資料寬度降低一倍,運算速度比演算法2稍慢。它是低位數MCU的最佳選擇。

    5.CRC小表和雙表組合演算法,它比演算法3多了一個CRC表格,但資料寬度降低一倍,運算速度比演算法3稍慢。它是低位數MCU的最佳選擇。

    學習CRC最底層原理可以從以上5種演算法中看出,特別是從移位演算法中搞清楚CRC的基本原理和運算。

    下圖中的HotCRC計算器就可以自動生成任意CRC權值(CRC表格)的5種C語言表格和原始碼。

    而且可以根據學習的要求生成更為詳細帶有除錯資訊的原始碼。

  • 2 # 流浪p民

    專業答案網上一搜大把,我相信題主可能並不是想看那些,我給你簡單通俗的說一下。crc校驗,實際上就是把需要校驗的全部資料,當成一個大數字(這個數的位數一般極大,具體數值大體相當於“待校驗資料的位元組數*256”),用這個數除以一個已知的特定數字(就是專業解釋的那個“多項式”了),得到的商不要,只要餘數(有時還需要再做點簡單的異或運算),這就是“crc校驗值”了,附加在原始資料的尾部即可。根據多項式和具體處理細節的不同,crc校驗有很多種標準,網上都能查到。手機上純手工打字,謝謝各位,祝工作、學習、生活快樂!

  • 中秋節和大豐收的關聯?
  • 電高壓鍋能蒸米粉肉嗎?