這個校驗主要的應用場景是ascii碼的校驗,因為ascii一共有 128個,所以只需要7位足夠了,但是計算機基本按照位元組儲存,所以自然而然多出來一位,也就是8位。那麼左邊的那個bit位就可以用來做奇偶校驗位置了。
核心思想:對資訊位中的1進行異或運算,然後根據這個異或結果和奇偶校驗的方法決定校驗位的值。
公式:
舉個例子:
對於奇偶校驗來說,只能檢測出來奇數字出錯的情況,也就是出錯的位的個數可能為1,3,5,7……
漢明碼的計算流程如下:
利用公式:
計算需要的校驗位數
確定校驗位分布,漢明校驗位的分部服從:
分組形成校驗關係
校驗位取值並計算最後的結果
利用公式計算位數
解得k為3
計算分布(
)分組形成校驗關係
這裡直接用**計算就行了
這裡的
就是漢明校驗位置了,那麼怎麼計算的呢?
這裡需要根據**中可以看出來,對於資訊位來說,可以總結出來這樣乙個公式
這樣的乙個公式可以好好理解一下,對照上面的計算方法,可以很清楚了明白計算了。
關於校驗
校驗計算完成以後根據
的值檢查是否有問題,如果全為0則沒有問題,如果不為0,則轉換為10進製,所代表的就是這個十進位制數代表的位置出現了錯誤,糾錯很簡單直接進行位反轉就行了,0轉1,1轉0
這個裡面的核心演算法是乙個叫做模2除法的東西,這個東西應該是crc中的核心部分了。
模2除法:
計算過程就是最高位夠用就按照四則混合運算的除法在商位置寫1,然後餘數使用異或計算。
crc的演算法流程如下
根據多項式最高次項的係數進行移位,例如對於多項式
移位補0後:
進行模2除法 被除數為資訊碼移位後結果 101001000 除數為
二進位制展開1101
得到的餘數就是crc校驗碼,把這個crc校驗碼寫到後面就可以了,結果為101001001
校驗過程是乙個逆過程,對乙個含有crc的資訊串通過模2除,計算餘數,如果不全為0,則十進位制數代表的位置的資訊出現了錯誤,反轉就可以了
32位crc校驗碼程式 CRC編碼
實驗資源來自於mooc 華中科技大學 計算機硬體系統設計 計算機硬體系統設計 華中科技大學 中國大學mooc 慕課 對crc不太清楚的同學可以看看,這位up主做的很直觀。crc校驗 手算與直觀演示 嗶哩嗶哩 乾杯 bilibili 設計需求 求原始資料的crc校驗和。多項式為10011。需要四個d觸...
計算機組成 校驗碼
crc校驗及其應用 海明校驗及其實現 同一編碼中,任意兩個合法編碼之間不同二進位制位數的最小值 例 0011與0001的碼距為1,一位錯誤無法識別 校驗碼中增加冗餘位的目的就是增加碼距 碼距與檢查或糾錯能力的關係 1 碼距 e 1 可檢測e個錯誤 2 碼距 2t 1 可糾正t個錯誤 3 碼距 e t...
模2除法介紹 CRC校驗碼計算
需要先了解模2加減法,究其根本其實是按位進行異或操作。模2加減法 按位異或操作,相同則0,不同則1 0 0 0 1 1 0 0 1 1 1 0 1 例子 1011 1000 計算過程 1 0 1 1 1 0 0 0 0 0 1 1 結果 1011 1000 0011 跟普通除法類似,但是 每次步驟的...