資源簡介
該C語言程序?qū)崿F(xiàn)了通信原理中關(guān)于糾錯碼章節(jié),(15,10)循環(huán)碼的編碼和解碼。
代碼片段和文件信息
#include
void?input();//input函數(shù)聲明處
void?int2bits(int?in);//int2bits函數(shù)聲明處
void?bits2code(int?data[]);//bits2code函數(shù)聲明處
void?code2bits(int?code[]);//code2bits函數(shù)聲明處
void?channel(int?code[]);//channel函數(shù)聲明出處
void?bits2int(int?decode[]);//bits2int函數(shù)聲明出處
void?menu(int?code[]);
int?main(){
input();
return?0;
}
//?該函數(shù)的作用是產(chǎn)生計算數(shù)據(jù)
void?input(){
int?iin_int[3]in;
char?in_char[3];
printf(“請輸入0-3FFh之間的16進制數(shù)據(jù)并回車:\n“);
for(i=0;i<3;i++){
in_char[i]=getchar();
}
if(in_char[0]>‘2‘){
printf(“請輸入0-3FFh的數(shù)據(jù)\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);
}
//?將輸入的數(shù)據(jù)轉(zhuǎn)化為二進制編碼?
void?int2bits(int?in){
int?data[10]={0}num=0;
while(in!=0){
data[num++]=in%2;
in=in/2;
}
bits2code(data);
}
//?將原始數(shù)據(jù)碼編碼為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經(jīng)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);
}
//將編碼后的數(shù)據(jù)提取出來
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[
- 上一篇:人工智能之動物識別C語言
- 下一篇:linux下的簡易聊天室
評論
共有 條評論