写前感言
我现在是一名即将毕业的大四本科生,大学生活快要结束了,我整理四年学习资料时发现好多东西都不见了,感觉挺遗憾的,另外自己学过的一些知识由于没有好好记录和整理,导致很混乱,最后我发现自己一直在白嫖,都没有做过什么贡献,使得我下定决心要开始写博客。之前我也有写博客的想法,但由于某些客观原因没有作为,现在想想好像也没什么,只是交流学习,没其他内容。
现在开始我的第一篇博客。
内容
(1)(7,4)循环码的编码
(2)(7,4)循环码的译码
(3)手动测试单个码字编译是否正确
(4)自动测试并计算误比特率
功能模块
(1)计算码多项式次数
(2)利用公式v(x)=xrm(x)+(xrm(x))g(x)编码
(3)伴随式译码
(4)手动测试
(5)自动测试
(6)主函数
结果展示
代码说明
计算码字次数
函数输出num是int型,它的每一位代表一个比特,码字的高位在左,低位在右。函数返回值为次数加一
int highest(int num){//求最高位=次数+1
int high=0;
for(int i=0;i<=6;i++){
if((num>>i)==1){
high=i+1;
}
}
return high;
}
功能快捷键
int code(int num){//编码
int n_low,n_high;
n_low=n_high=num<<3;
//g(x)=00001011
int g=11;
while(highest(n_low)>=4) n_low=n_low^(g<<(highest(n_low)-4));
return (n_high)|n_low;
}
译码
输入为接收码字的十进制表示,输出为译码码字的十进制表示。伴随式译码表中存储的是伴随式对应的第几位错。
int decode(int r){//解码 ,输出信息位
//r接收码字
int s=r;//s伴随式
int v,m; //v译码码字,m信息位
int g=11;//g(x)=00001011
while(highest(s)>=4) s=s^(g<<(highest(s)-4));
//伴随式译码
int dict[8]={0,0,1,3,2,6,4,5};//伴随式译码表