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"
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"