资源简介
实现编码课程中经典编码7.4汉明码的代码实现
代码片段和文件信息
//7.4汉明码编解码
#include
#include
using namespace std;
//编码函数
void bm()
{
int t=0xa[3]b[6]tempy=0;
int G[4][7]={{1101000}{0110100}{1110010}{1010001}};//说明生成矩阵
cout<<“编码----请输入4位二进制消息序列(列:1 1 1 1):“< while(t<4)
{
cin>>x;
if(x!=0&&x!=1)
{
cout<<“输入序列错误,请重新输入:“< t=0;
continue;
}
else
{
a[t]=x;
t++;
}
}//此循环消息输入
for(int i=0;i<7;i++)
{
temp=0;
for(int j=0;j<4;j++)
temp+=a[j]*G[j][i];
if(temp%2==0)
b[i]=0;
else
b[i]=1;
}//与生成矩阵相乘,生成码字
cout<<“编码后的码字:“;
while(y<7)
{
cout< y++;
}
cout< }
//译码函数
void ym()
{
int t=0b[7]s[3]e[7]tempxy=0m=3r=0;
int H[7][3]={{100}{010}{001}{110}{011}{111}{101}};//校验矩阵
cout<<“译码----请输入7位二进制码字序列(列:1 1 1 1 1 1 1 ):“< while(t<7)
{
cin>>x;
if(x!=0&&x!=1)
{
cout<<“输入序列错误,请重新输入:“< t=0;
continue;
}
else
{
b[t]=x;
t++;
}
}//此循环是序列输入
for(int i=0;i<3;i++)
{
temp=0;
for(int j=0;j<7;j++)
temp+=b[j]*H[j][i];
if(temp%2==0)
s[i]=0;
else
s[i]=1;
}//此循环计算校正子
e[0]=s[0]&(!s[1])&(!s[2]);//计算差错位
e[1]=(!s[0])&s[1]&(!s[2])
- 上一篇:C++实现DNS劫持
- 下一篇:Qt5 串口助手源代码
评论
共有 条评论