海明碼(也叫漢明碼)具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法
設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x-1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n+x位,因此x應該滿足
2x-1 ≥ n+x
使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。
校驗碼在二進位制串中的位置為2的整數冪。剩下的位置為資料。如圖所示。位置1
2345
6789
1011
內容x1x21
x3010
x4110
將每個位置,都拆成校驗位位置值相加,可知道乙個校驗位跟哪些資料位有關係
以求x2的值為例。為了直觀,將**中的位置用二進位制表示。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
內容x1
x2
1x30
1
0x41
1
0
為了求出x2,要使所有位置的第二位是1的資料(即形如**1*的位置的資料)的異或值為0。即x2^1^1^0^1^0 = 0。因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011內容0
1110
1001
10因此1010110的海明碼為01110100110。
校驗假設位置為1011的資料由0變成了1,校驗過程為:
將所有位置形如***1, **1*, *1**, 1***的資料分別異或。
***1: 0^1^0^0^1^1 = 1
**1*: 1^1^1^0^1^1 = 1
*1**: 1^0^1^0 = 0
1***: 0^1^1^1 = 1
以上四組中,如果一組異或值為1,說明該組中有資料出錯了。***1 **1* 1***的異或都為1,說明出錯資料的位置為1011。
crc的實現原理十分易於硬體實現,因此被廣泛的應用於計算機網路上的差錯控制。crc校驗碼需根據crc生成多項式進行。
關於軟考中涉及到的海明碼和crc校驗碼,主要是兩種的驗證方式。海明碼的校驗過程比較複雜,在計算機中不經常用,而crc校驗碼比較容易,先確定校驗碼的位數,以及除數是什麼?所以個人感覺想要掌握這兩種情況,就需要分析的方式。
例項:原始報文為11001010101,其多項式為x4+x3+x+1。在原始報文的後面若干個0(等於校驗碼的位數,而生成多項式的最高冪次就是校驗位數,即使用該生成多項式產生的校驗碼為4位)作為被除數,除以生成多項式所對應的二進位制數。
x4+x3+x+1對應的二進位制為11011,則除數作為11011
運算時可借位,但被借的位數值不變,如01減10=11
然後把0011新增到原始報文的後面就是結果110010101010011。
海明碼的編碼和校驗方法
【軟考】——海明碼和crc碼
設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x-1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n+x位,因此x應該滿足
2x-1 ≥ n+x
使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。
校驗碼在二進位制串中的位置為2的整數冪。剩下的位置為資料。如圖所示。位置1
2345
6789
1011
內容x1x21
x3010
x4110
將每個位置,都拆成校驗位位置值相加,可知道乙個校驗位跟哪些資料位有關係
以求x2的值為例。為了直觀,將**中的位置用二進位制表示。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
內容x1
x2
1x30
1
0x41
1
0
為了求出x2,要使所有位置的第二位是1的資料(即形如**1*的位置的資料)的異或值為0。即x2^1^1^0^1^0 = 0。因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011內容0
1110
1001
10因此1010110的海明碼為01110100110。
校驗假設位置為1011的資料由0變成了1,校驗過程為:
將所有位置形如***1, **1*, *1**, 1***的資料分別異或。
***1: 0^1^0^0^1^1 = 1
**1*: 1^1^1^0^1^1 = 1
*1**: 1^0^1^0 = 0
1***: 0^1^1^1 = 1
以上四組中,如果一組異或值為1,說明該組中有資料出錯了。***1 **1* 1***的異或都為1,說明出錯資料的位置為1011。
CRC冗餘校驗碼
1 基本概念 crc cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行相似的演算法以保證資料傳輸的正確性與完整性。2 基本原理 這裡先介紹 模2除法 的知識,與 算數除法 類似,只不過 模2除法 ...
校驗碼 漢明碼 CRC碼
資料校驗碼 任意兩個碼字之間最少變化的二進位制位數,被稱為資料校驗碼的碼距 例如用四位二進位制數表示16種狀態,此時碼距為1,即兩個碼字之間最少僅有乙個二進位制不同,這種編碼沒有檢錯能力。檢糾錯能力實現原理 在編碼中,除去合法的碼字外,再加入一些非法的碼字,當某個合法的碼字出現錯誤時,就變成為非法碼...
CRC校驗(迴圈冗餘校驗碼)
一 概念 crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。二 工作原理 迴圈冗餘校...