海明编码报告-.doc

海明编码报告-.doc

ID:52299204

大小:264.50 KB

页数:9页

时间:2020-03-26

海明编码报告-.doc_第1页
海明编码报告-.doc_第2页
海明编码报告-.doc_第3页
海明编码报告-.doc_第4页
海明编码报告-.doc_第5页
资源描述:

《海明编码报告-.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、计算机网络课程设计课程设计题目:海明码设计学号:201320181519姓名:彭磊专业:电子商务班级:13218152015年06月17日8一.海明编码原理海明码是一种可以纠正一位差错发现两位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式:         2r>=n+1 或 2r>=k+r+1  海明码的编码效率为:            R=k/(k+r)式中k为信息位位数    r为增加冗余位位数2.海明码的生成与接收

2、a.每个校验位Ri被分配在海明码的第2的i次方的位置上;b.海明码的每一位(Hi)是由多个/1个校验值进行校验的,被校验码的位置码是所有校验这位的校验位位置码之和。二.海明编码方法1)海明码的生成(顺序生成法)。 例.已知:信息码为:"11001100" (k=8) 求:海明码码字。解:1)把冗余码p1、p2、p3、…,顺序插入信息码中,得海明码   码字:"p1p21p3100p411 0 0"   码位: 123456789101112     其中p1,p2,p3,p4分别插于2k位(k=0,1,2,3)。码位分别为1,2,4,8。  2)冗余码p1,

3、p2,p3,p4的矩阵变换:(相当于监督关系式)8     3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0):      P1=∑(0,1,1,0,1,0)=1      P2=∑(0,1,0,0,1,0)=0      P3=∑(0,1,0,0,0) =1      P4=∑(0,1,1,0,0) =0   4)海明码为:"101110001100"2)海明码的接收。 例.已知:接收的码字为:"100110001100"(k=8)    求:发送端的信息码。解:1)设错误累加器(err)初值=0    2)求出冗余码的偶校验和,并按码位累加到e

4、rr中:      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)码字的错误位置就是错误累加器(err)的值3。    4)纠错--对码字的第3位值取反得正确码字:      "101110001100"    5)把位于2k位的冗余码删除得信息码:"11001100"三.程序8#

5、includevoidoutput(int*num);intInputCheck(int*Num);voidCodeSq(int*Num,int*Out);voidbianma(int*Num,intbNum[][15]);intcifang(inta,intb);voidyima(int*Num,intbNum[][15],int*Yout);voidjieshou(int*Num);voidmain(){intbNum[4][15]={{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},{0,0,0,1,1,1,1,0,0,

6、0,0,1,1,1,1},{0,1,1,0,0,1,1,0,0,1,1,0,0,1,1},{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}};intInputNum[11];//输入11位数intOut[15];intYout[4];inti=0;printf("Pleaseinput11numbers(only0or1):");for(i=0;i<11;i++){scanf("%d",&InputNum[i]);}if(!InputCheck(InputNum))//判断是否输入正确{CodeSq(InputNum,Out);//把p1、

7、p2等位加入数据里printf("初始编码值:");output(Out);bianma(Out,bNum);//编码,把p1、p2等为解出来printf("海明编码值:");output(Out);//Out[10]=!Out[10];printf("译码输出值:");yima(Out,bNum,Yout);//解码输出,判断是否有错output(Out);printf("接收值:");//接收值jieshou(Out);}//output(InputNum);}voidoutput(int*num){8inti=0;for(i=0;i<=

8、14;i++){printf("%d",num[i]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。