當前位置:編程學習大全網 - 編程語言 - 如何求解海明碼?

如何求解海明碼?

1)海明碼的生成。 例1.已知:信息碼為:"0010"。海明碼的監督關系式為: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 求:海明碼碼字。 解:1)由監督關系式知冗余碼為a2a1a0。 2)冗余碼與信息碼合成的海明碼是:"0010a2a1a0"。 設S2=S1=S0=0,由監督關系式得: 異或運算: a2=a4+a5+a6=1 a1=a3+a5+a6=0 a0=a3+a4+a6=1 因此,海明碼碼字為:"0010101" 對以上這道題目的第二問的疑問: 冗余碼與信息碼合成的海明碼是:"0010a2a1a0"。為什麽a2a1a0直接加在信息碼後面,而不是按照1,2,4,8位的順序加在信息碼後面例如:001(a2)0(a1)(a0)=0011001 2)海明碼的接收。 例2.已知:海明碼的監督關系式為: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 接收碼字為:"0011101"(n=7) 求:發送端的信息碼。 解:1)由海明碼的監督關系式計算得S2S1S0=011。 2)由監督關系式可構造出下面錯碼位置關系表: S2S1S0 000 001 010 100 011 101 110 111 錯碼位置 無錯 a0 a1 a2 a3 a4 a5 a6 3)由S2S1S0=011查表得知錯碼位置是a3。 4)糾錯--對碼字的a3位取反得正確碼字:"0 0 1 0 1 0 1" 5)把冗余碼a2a1a0刪除得發送端的信息碼:"0010" 方法二:(不用查表,方便編程) 1)海明碼的生成(順序生成法)。 例3.已知:信息碼為:" 1 1 0 0 1 1 0 0 " (k=4代表冗余位數,即校驗碼位數) 求:海明碼碼字。 解:1)把冗余碼A、B、C、…,順序插入信息碼中,得海明碼 碼字:" A B 1 C 1 0 0 D 1 1 0 0 " 碼位: 1 2 3 4 5 6 7 8 9 10 11 12 其中A,B,C,D分別插於2的k次方位(k=0,1,2,3)。碼位分別為1,2,4,8。 2)冗余碼A,B,C,D的線性碼位是:(相當於監督關系式) 監督關系式的推導: D C B A 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 根據上面表格得到 A B C D 需要說明的是公式中參與計算的是表格中出現"1"的那個位 右邊是數據位的二進制數,公式中的"+"表示異或 故此有如下表達式: A->1,3,5,7,9,11;(這裏的1 3 5 7 9 11均為A那壹列出現1的位) B->2,3,6,7,10,11; C->4,5,6,7,12;(註 5=4+1;6=4+2;7=4+2+1;12=8+4) D->8,9,10,11,12。 3)把線性碼位的值的偶校驗作為冗余碼的值(設冗余碼初值為0): A=∑(0,1,1,0,1,0)=1 B=∑(0,1,0,0,1,0)=0 C=∑(0,1,0,0,0) =1 D=∑(0,1,1,0,0) =0 4)海明碼為:"1 0 1 1 1 0 0 0 1 1 0 0" 2)海明碼的接收。 例4.已知:接收的碼字為:"1 0 0 1 1 0 0 0 1 1 0 0"(k=4代表冗余位數,即校驗碼位數) 求:發送端的信息碼。 解:1)設錯誤累加器(err)初值=0 2)求出冗余碼的偶校驗和,並按碼位累加到err中: A=∑(1,0,1,0,1,0)=1 err=err+2^0=1 B=∑(0,0,0,0,1,0)=1 err=err+2^1=3 C=∑(1,1,0,0,0) =0 err=err+0 =3 D=∑(0,1,1,0,0) =0 err=err+0 =3 由err≠0可知接收碼字有錯, 3)碼字的錯誤位置就是錯誤累加器(err)的值3。 4)糾錯--對碼字的第3位值取反得正確碼字: "1 0 1 1 1 0 0 0 1 1 0 0" 5)把位於2的k次方位的冗余碼刪除得信息碼:"1 1 0 0 1 1 0 0"

  • 上一篇:求壹份C語言課程設計報告要求包括:系統需求分析,總體設計,詳細設計,程序調試分析。
  • 下一篇:兒童藝術機構和最新公司的命名技巧
  • copyright 2024編程學習大全網