一、校驗碼概念
程序員
校驗碼主要是爲了解決計算機各部件進行數據傳輸和交換,確保傳送過程的正確無誤,一是爲了提升硬件電路的可靠性,二是提升代碼的校驗能力。一般會用校驗碼來檢查傳送的數據是否正確。工具
校驗碼編碼分爲兩類:合法編碼、錯誤編碼。合理的設計錯誤編碼和編碼規則,能夠在數據傳輸的時候發現某種錯誤是就會變成錯誤編碼,從而達到檢驗錯誤的目的。網站
碼距:指的是一個編碼系統中任意兩個合法編碼之間至少有多少個二進制位不一樣。編碼
經常使用的三種校驗碼:奇偶校驗碼、海明碼、循環冗餘校驗碼。url
二、校驗碼分類.net
3.1 奇偶校驗碼(Parity Code)設計
奇偶校驗碼特色以下:blog
不管數據位多少位,校驗位只有一位get
數據位和校驗位一共所含的1個數爲奇數,稱爲奇校驗博客
數據位和校驗位一共所含的1個數爲偶數,稱爲偶校驗
原理:在數據傳輸前,咱們會求一次校驗位,傳輸後,會求一次校驗位,那麼,在奇偶校驗中,咱們經過比較這兩個校驗位是否相同,通常是採用異或的方式,若結果爲1,則說明有奇數個錯誤,結果爲0,則說明正確或者偶數個錯誤。
常見的奇偶校驗碼 :水平奇偶校驗碼、垂直奇偶校驗碼、水平垂直奇偶校驗碼。
3.2 海明碼(Hamming Code)
設數據位是n位,校驗位是k位,則n和k知足如下關係:
2^k-1>=n+k
k 常取知足該關係的最小值。
選擇題公式,能夠記住
3個原則
海明碼只能檢測出2位錯,糾1位錯
海明碼默認進行偶校驗(除非特殊說明使用奇校驗)。
海明碼是一串由0和1組成的序列(除01外沒有其餘的值)
3.3 循環冗餘校驗碼 CRC
循環冗餘校驗碼普遍應用於數據通訊領域和磁介質的存儲系統中,它利用生成多項式爲k個數據位產生r個校驗位來進行編碼,其編碼長度爲k+r。CRC的代碼格式以下:
循環冗餘校驗碼有兩部分組成:數據爲、校驗位。若數據位佔k位,則校驗位佔n-k位。n爲CRC碼的字長。檢驗碼越長校驗能力就會越強。在CRC編碼是,採用的是模2運算,模2運算加減運算的規則是按位運算,不發生借位和進位。
IT技術分享社區
我的博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖經常使用的工具程序員效率:整理經常使用的在線筆記軟件遠程辦公:經常使用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識