循环码编译码

写前感言

我现在是一名即将毕业的大四本科生,大学生活快要结束了,我整理四年学习资料时发现好多东西都不见了,感觉挺遗憾的,另外自己学过的一些知识由于没有好好记录和整理,导致很混乱,最后我发现自己一直在白嫖,都没有做过什么贡献,使得我下定决心要开始写博客。之前我也有写博客的想法,但由于某些客观原因没有作为,现在想想好像也没什么,只是交流学习,没其他内容。
现在开始我的第一篇博客。

内容

(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};//伴随式译码表
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值