漢明碼或者海明碼的計算或者糾錯

2021-08-28 16:55:58 字數 2262 閱讀 1884

設k為有效資訊的位數,r為校驗位的位數,則整個碼字的位數n應滿足不等式:nkr ≤2r1(是2的r次方)。若要求海明碼能檢測出2位錯誤,則再增加1位校驗位。

例如:二進位制編碼位10101100,共8位所以k=8,可以得出校驗位r的位數為4位。

位號(1~n)是那些權值為2的那些位,即2^0、2^1、2^2、……、2^r-1的位置作為校驗位,記作p1、p2、p3、……、pr餘下的為有效資訊位。

校驗位p1=2^(1-1)其他校驗位同理。

d8d7d6……d2d1對應資料10101100

海明碼p5

d8d7

d6d5

p8d4

d3d2

p4d1

p2p1

位號h13

h12h11

h10h9

h8h7

h6h5

h4h3

h2h1

資料填入10

1011

00求得的海明碼

將n位分為r組,第i位由校驗位號之和等於i的那些校驗位所校驗。

個人是這樣分組的(pi校驗的位是從mi開始連續i位,然後間隔i位,再校驗連續i位,再間隔…….)

海明碼p13

d8d7

d6d5

p8d4

d3d2

p4d1

p2p1

位號h13

h12h11

h10h9

h8h7

h6h5

h4h3

h2h1

校驗位p8✔✔

✔✔✔校驗位p4✔✔

✔✔✔校驗位p2✔✔

✔✔✔✔

校驗位p1✔✔

✔✔✔✔

由表可以看出:

p1校驗資料位 h1,h3,h5,h7,h9,h11,…

p2校驗資料位 h2,h3,h6,h7,h10,h11,…

p4校驗資料位 h4,h5,h6,h7,h12,…

p8校驗資料位 h8,h9,h10,h11,h12,…(注意:p的下標對應的是海明碼的下標)

校驗位的形成是由海明碼的所有位求異或得到的例如:

p1=h1⊕h3⊕h5⊕h7⊕h9⊕h11

p2=h2⊕h3⊕h6⊕h7⊕h10⊕h11

p4=h4⊕h5⊕h6⊕h7⊕h12

p8=h8⊕h9⊕h10⊕h11⊕h12

為了能檢驗兩個錯誤,增加一位校驗位pr+1,放到最高位。

pr+1=所有位求異或

例子:求10101100的海明碼

海明碼p5

d8d7

d6d5

p8d4

d3d2

p4d1

p2p1

位號h13

h12h11

h10h9

h8h7

h6h5

h4h3

h2h1

資料填入10

1011

00求得的海明碼11

0100

1101

011

p1=h1⊕h3⊕h5⊕h7⊕h9⊕h11

=1⊕0⊕0⊕1⊕0⊕1=1

p2=h2⊕h3⊕h6⊕h7⊕h10⊕h11

=0⊕1⊕1⊕1⊕0=1

p4=h4⊕h5⊕h6⊕h7⊕h12

=0⊕1⊕1⊕1=1

p8=h8⊕h9⊕h10⊕h11⊕h12

=0⊕1⊕0⊕1=0

將資料填入表中即可得到最終的海明碼,但是為了檢驗2給錯誤,我們再把求得的海明碼的所有位在求一次異或

p13=1⊕0⊕1⊕0⊕0⊕1⊕1⊕0⊕1⊕0⊕1⊕1=1

現在假設第5位出錯了,也就是第五位在傳輸的過程中被改為「1「了(d5由0變為1)。即得到的資料為(1 1011 0110 1011)。現在要找出錯誤的位置(假設現在不知道出錯的位置)。

s1=p1⊕d1⊕d2⊕d4⊕d5⊕d7 = 1

s2=p2⊕d1⊕d3⊕d4⊕d6⊕d7 = 0

s3=p4⊕d2⊕d3⊕d4⊕d8 = 0

s4=p8⊕d5⊕d6⊕d7⊕d8 = 1

s5=pv⊕d1⊕d2⊕d3⊕d5⊕d6⊕d8 = 0

然後將s5s4s3s2s1 = 01001 轉為十進位制 = 9,即求得(1 1011 0110 1011)第9位出錯,將1改為0完成糾錯

海明碼(漢明碼)的工作機制

一 海明碼的形成方式 1 首先海明碼是由資訊位和校驗位組成的 2 資訊位校驗位的關係 校驗位的位數r 資訊位的位數i 2 r 1 i r 3 校驗位的位置是2的整數次方 如 1 2 4 8 4 海明碼位數分組 因為海明碼其實是分組的奇偶校驗碼,所以有個分組的概念 1 1 3 5 7 2 2 3 6 ...

計網筆記 海明碼(漢明碼)

海明碼是可以發現雙位元錯誤,並可以糾正單位元錯誤的編碼方案。一般來講,檢錯編碼不一定具有糾錯能力,但是糾錯編碼具有檢錯能力 其工作流程可以分為以下四個步驟 1 確定校驗碼位數r 2 確定校驗碼和資料的位置 3 求出校驗碼的值 4 檢錯並糾錯。在以下的工作流程中,我們要傳送的資料d 101101.我們...

海明碼計算及其糾錯原理詳解

海明碼計算及其糾錯原理詳解 圓圈中間乙個加號。運算法則總結兩句話就是 異為1,同為0。換言之,1 1 0,1 0 1。現在請大家閉上眼睛想一想,這種運算將在海明碼糾錯的過程中起到乙個什麼作用呢?我給大家舉個例子,你就明白了!s a1 a2.an 1 an 0,假設其中ak 0,那麼當ak由0變為1時...