📄 fec码.cpp
字号:
# include "stdio.h"
void main()
{ int code_in;
int i,j,a;
int code_out[15];
int mid[15];
/* 编码 */
int g[15]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x100,0x200,0x365,0x1AF,0x35E,0x1D9,0x3B2};
/* int g[15]={0000000001b, */
/* 0000000010b, */
/* 0000000100b, */
/* 0000001000b, */
/* 0000010000b, */
/* 0000100000b, */
/* 0001000000b, */
/* 0010000000b, */
/* 0100000000b, */
/* 1000000000b, */
/* 1101100101b, */
/* 0110101111b, */
/* 1101011110b, */
/* 0111011001b, */
/* 1110110010b} */
printf("输入原始信息数据(OX):");
scanf("%x",&code_in);if (code_in>1023)
{printf("输入数据溢出:");}
else
{for(i=0;i<15;i++)
{
a=code_in&g[i];
for(j=0;j<10;j++)
{
mid[j]=a&1;
a=a>>1;
}
code_out[i]=mid[0];
for(j=1;j<10;j++)
code_out[i]=code_out[i]^mid[j];
}
printf("编码后的输出信息流: ");
for(i=14;i>=0;i--)
printf("%d",code_out[i]);}
/* 译码*/
for (i=0;i<15;i++)
{
code_out[i]=0;
mid[i]=0;
}
code_in=0;
i=0;j=0;a=0;
int check_out[5];
int errorflag,matchbit,matchflag,comparebit;
int check[5]={0x765,0x9AF,0x135E,0x21D9,0x43B2};
/* int check[5]={ 000011101100101b, */
/* 000100110101111b, */
/* 001001101011110b, */
/* 010000111011001b, */
/* 100001110110010b } */
printf("\n译码器输入数据(OX):");
scanf("%x",&code_in);
a=code_in;
for (i=0;i<15;i++)
{
code_out[i]=a&1;
a=a>>1;
}
for(i=0;i<5;i++)
{
a=code_in&check[i];
for(j=0;j<15;j++)
{
mid[j]=a&1;
a=a>>1;
}
check_out[i]=mid[0];
for(j=1;j<15;j++)
check_out[i]=check_out[i]^mid[j];
}
i=0; errorflag=0;
do
{
if (check_out[i]==1) { errorflag=1; i=5;}
else i++;
}
while (i<5);
if (errorflag==1)
{ i=0; matchbit=100;
do
{
j=0; matchflag=1;
do
{
comparebit=(check[j]>>i)&1;
if (check_out[j]!=comparebit)
{
j=5;matchflag=0;
}
else j++;
}
while (j<5);
if (matchflag==1)
{
matchbit=i;i=15;
}
else i++;
}
while (i<15);
if (matchbit<=14)
{
code_out[matchbit]=code_out[matchbit]^1;
printf("第%d位数据出错!\n",matchbit+1);
}
else printf("错误但不可纠!\n");
}
else printf("传输正确或错误不可检!\n");
printf("译码后的信息比特为:");
for (i=9;i>=0;i--)
printf("%d",code_out[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -