32位crc校驗碼程式 組成中三個校驗碼計算和校驗

2021-10-13 17:52:35 字數 1136 閱讀 4358

這個校驗主要的應用場景是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 跟普通除法類似,但是 每次步驟的...