资源描述:
《海明编码实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、海明编码实验报告学科专业:计算机科学与技术姓名:学号:指导教师:天津工业大学计算机科学与技术学院二零一零年十二月8一.海明编码原理海明码是一种可以纠正一位差错发现两位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式: 2r>=n+1 或 2r>=k+r+1 海明码的编码效率为: R=k/(k+r)式中k为信息位位数 r为增加冗余位位数 2
2、.海明码的生成与接收二.海明编码方法1)海明码的生成(顺序生成法)。 例3.已知:信息码为:"11001100" (k=8) 求:海明码码字。解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码 码字:"AB1C100D11 0 0" 码位: 123456789101112 其中A,B,C,D分别插于2k位(k=0,1,2,3)。码位分别为1,2,4,8。 2)冗余码A,B,C,D的线性码位是:(相当于监督关系式) A->1,3,5,7,9,11;
3、 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) =08 4)海明码为:"101110001100"2)海明码的接收。 例.已知:接收的
4、码字为:"100110001100"(k=8) 求:发送端的信息码。解:1)设错误累加器(err)初值=0 2)求出冗余码的偶校验和,并按码位累加到err中: A=∑(1,0,1,0,1,0)=1 err=err+20=1 B=∑(0,0,0,0,1,0)=1 err=err+21=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)码字的错误
5、位置就是错误累加器(err)的值3。 4)纠错--对码字的第3位值取反得正确码字: "101110001100" 5)把位于2k位的冗余码删除得信息码:"11001100"3)发现两位差错P5=∑(1,2,3,4,5,6,7,8,9,10,11,12)S5=∑(1,2,3,4,5,6,7,8,9,10,11,12,P5)如果err≠0且S5=0是两位错。三.程序importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicc
6、lassHaimingextendsAppletimplementsActionListener{Labelfsxx;Labelxybm;Labelxdbm;Labelxdgr;Labelxdym;Labelcc;Labelxyym;Labelsdxx;TextFieldtfxx;TextFieldtxybm;8TextFieldtxdbm;TextFieldtxdgr;TextFieldtxdym;TextFieldtcc;TextFieldtxyym;TextFieldtsdxx;publicvoidinit(
7、){fsxx=newLabel("发送信息:");xybm=newLabel("信源编码:");xdbm=newLabel("信道编码:");xdgr=newLabel("信道干扰:");xdym=newLabel("信道译码:");cc=newLabel("一/二错:");xyym=newLabel("信源译码:");sdxx=newLabel("收到信息:");tfxx=newTextField(30);txybm=newTextField(30);txdbm=newTextField(30);txdgr=ne
8、wTextField(30);txdym=newTextField(30);tcc=newTextField(30);txyym=newTextField(30);tsdxx=newTextField(30);setLayout(newGridLayout(8,2));add(fsxx);add(tfxx);add(xybm);add(txybm);add(