• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: 循环码  (15,10  

资源简介

该C语言程序实现了通信原理中关于纠错码章节,(15,10)循环码的编码和解码。

资源截图

代码片段和文件信息

#include

void input();//input函数声明处
void int2bits(int in);//int2bits函数声明处
void bits2code(int data[]);//bits2code函数声明处
void code2bits(int code[]);//code2bits函数声明处
void channel(int code[]);//channel函数声明出处
void bits2int(int decode[]);//bits2int函数声明出处
void menu(int code[]);

int main(){
input();
return 0;
}


// 该函数的作用是产生计算数据
void input(){

int iin_int[3]in;
char in_char[3];
printf(“请输入0-3FFh之间的16进制数据并回车:\n“);

for(i=0;i<3;i++){
in_char[i]=getchar();
}

if(in_char[0]>‘2‘){
printf(“请输入0-3FFh的数据\n“);
input();
}

for(i=0;i<3;i++){

if(in_char[i]>=‘0‘&&in_char[i]<=‘9‘){
in_int[i]=in_char[i]-48;
}

else if(in_char[i]>=‘A‘&&in_char[i]<=‘Z‘){
in_int[i]=in_char[i]-65+10;
}

else{
in_int[i]=in_char[i]-97+10;
}

}

in = in_int[0]*16*16+in_int[1]*16+in_int[2];

int2bits(in);

}


// 将输入的数据转化为二进制编码 
void int2bits(int in){
int data[10]={0}num=0;
while(in!=0){
data[num++]=in%2;
in=in/2;
}
bits2code(data);
}

// 将原始数据码编码为FEC码
void bits2code(int data[10]){
int code[15]reg[5]={0}itemp;
printf(“编码前的二进制信息序列为(MSB-->LSB):         “);
for(i=0;i<10;i++){
temp = reg[4]^data[i];
reg[4] = reg[3]^temp;
reg[3] = reg[2];
reg[2] = temp^reg[1];
reg[1] = reg[0];
reg[0] = temp;
printf(“%d“data[i]);
}
printf(“\n经2/3FEC编码后的二进制信息序列为(MSB-->LSB):“);
for(i=0;i<15;i++){
if(i<5){
code[i] = reg[i];
printf(“%d“code[i]);
}else{
code[i] = data[14-i];
}
}
printf(“  “);
for(i=5;i<15;i++){
printf(“%d“code[i]);
}
printf(“\n--------------------------------------------------------------\n“);
channel(code);
}


//将编码后的数据提取出来
void code2bits(int code[15]){
int reg[5]={0}itempnum=0andDoorindexdecode[10]={0};
for(i=0;i<15;i++){
temp = reg[4];
reg[4] = reg[3]^reg[4];
reg[3] = reg[2];
reg[2] = reg[1]^temp;
reg[1] = reg[0];
reg[0] = temp^code[

评论

共有 条评论