📄 main.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<math.h>
char coef_fx[]="11101001";//x^7+x^6+x^5+x^3+1,请根据不同得表达式加以修改
int n,N;
void GetExtensionField(char *p_coef);
void PrintExtensionField(char *p_coef);
void main()
{
n=strlen(coef_fx)-1;
N=pow(2,n)-1;
char *p_coef_alpha=new char [N*n+1];//每一个码字宽n,共N个
GetExtensionField(p_coef_alpha);
PrintExtensionField(p_coef_alpha);
delete[]p_coef_alpha;
}
void GetExtensionField(char *p_coef)
{
memset(p_coef,'0',n*N);
p_coef[0]='1';//得到初始扩展码(100...00);
int i,j;
//计算扩展码
for(i=1;i<N;i++)
{
strncpy(&p_coef[n*i+1],&p_coef[n*(i-1)],n-1);//将上一个码右移一位赋值给新生成得码
if(p_coef[i*n-1]=='1')
{
for(j=0;j<n;j++)
p_coef[n*i+j]=0x30+(p_coef[n*i+j]^coef_fx[n-j]);//模二加=异或,同时加上0x30变成字符'0'或'1'
}
}
}
void PrintExtensionField(char *p_coef)
{
//输出扩码
int i,j;
char buffer[1024]="";
printf("the extension field is:\n");
for(i=0;i<N;i++)
{
strcpy(buffer,"");
printf("a^%d\t=",i);
for(j=0;j<n;j++)
{
if(p_coef[i*n+j]=='1')
{
sprintf(&buffer[strlen(buffer)],"a^%d+",j);
}
}
if(buffer[2]=='0')//将x^0替换为1
{
buffer[2]='1';
strcpy(buffer,&buffer[2]);
}
if(buffer[strlen(buffer)-1]=='+')// 去掉最后一个+;
buffer[strlen(buffer)-1]='\0';
strcat(buffer,"\n\t (");
strncat(&buffer[strlen(buffer)],&p_coef[i*n],n);//增加对应得01码
strcat(buffer,")");
printf("%s\n",buffer);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -