信息论与编码理论实验报告
题目:汉明编码
班级:信息安全二班
姓名:吴用
一、题目:
汉明编码
二、实验要求
用汉明编码实现对信源的编码
三、实验步骤
程序使用方法
运行程序,先输入所要编码的个数,然后一次输入一个字符作为信源名,以及一个信源的概率,即可得编码
四、源程序
include
include
voidhanming()
inti,_,k=2;
inth[20];
for(i=0;i<20;i++)h[i]=0;
cout<<"请输入要转换的有效位的位数"< cin>_; while(pow(2,k) cout<<"请输入要转换的有效码字"< if(i!=1i!=2i!=4i!=8)cin>h[i];} h[1]=(h[3]+h[5]+h[7]+h[9]+h[11]+h[13]+h[15])%2;h[2]=(h[3]+h[6]+h[7]+h[10]+h[11]+h[14]+h[15])%2;h[4]=(h[5]+h[6]+h[7]+h[12]+h[13]+h[14]+h[15])%2;h[8]=(h[9]+h[10]+h[11]+h[12]+h[13]+h[14]+h[15])%2;for(i=1;i=_+k;i++)cout< intjiaoyan(inth[],intn) inti,p1,p2,p4,p8,q; inth[20]; for(i=0;i for(i=n+1;i<20;i++)h[i]=0; if(n==3){ p1=(h[1]+h[3])%2; p2=(h[2]+h[3])%2; q=2p2+p1; returnq; if(n>=5n==7){ p1=(h[1]+h[3]+h[5]+h[7])%2; p2=(h[2]+h[3]+h[6]+h[7])%2; p4=(h[4]+h[5]+h[6]+h[7])%2; q=4p4+2p2+p1; returnq; if(n>=9n==15){ p1=(h[1]+h[3]+h[5]+h[7]+h[9]+h[11]+h[13]+h[15])%2;p2=(h[2]+h[3]+h[6]+h[7]+h[10]+h[11]+h[14]+h[15])%2;p4=(h[4]+h[5]+h[6]+h[7]+h[12]+h[13]+h[14]+h[15])%2;p8=(h[8]+h[9]+h[10]+h[11]+h[12]+h[13]+h[14]+h[15])%2;q=8p8+4p4+2p2+p1; returnq; else{ cout<<"!!!!查错错误!!!!"< return-1; voidmain() hanming(); intcoco; inti,n,j,h[20]; cout< cout<<"请输入要查错的码字的位数"< cin>n; cout<<"请输入要查错的码字(每输入一位按一次回车)"< j=jiaoyan(h,n); if(j==0)cout<<"码字没有错误"< if(j!=0)cout<<"错误的位数是:"< cout< cin>coco; 五、心得 由于对编程语言掌握的比较不够熟练,所以在编码过程碰到了许多问题,得重温知识,深刻去理解,还有就是对汉XX没能真正领悟的情 况下操作起来顾此失彼,往往达不到实验结果,觉得还是要对知识牢固的掌握才行! 因篇幅问题不能全部显示,请点此查看更多更全内容