?? 123.txt
字號:
文件頭:
//****************************************************************
//該程序實現循環碼的兩種編碼方式,K級和N-K級編碼器的仿真程序
//同時實現能糾正一位錯誤的循環碼的譯碼;
//****************************************************************
//通信與信息系統專業 詹銳鑫 07212439 2008年1月24日
//****************************************************************
#include <iostream.h>
const int n=7,k=4,r=n-k; //循環碼的n,k值
//可以改變這兩個值,實現對不同的循環碼進行仿真;
void encodeh(int m[],int h[],int c[]);
void encodeg(int m[],int g[],int c[]);
void decode_1err(int r[],int g[],int c[]);
void main()
{
int g[r+1]={1,0,1,1}; //循環碼的生成多項式,高次方在左邊位元上;
int h[k+1]={1,0,1,1,1}; //循環碼的校驗多項式,高次方在左邊位元上;
int m[k]={1,0,0,1}; //循環碼的編碼器輸入;
int c[n]={0}; //編碼器的輸出;
int i=0;
cout<<"(n,k)="<<n<<' '<<k<<endl;
cout<<"g:";
for(i=0;i<=n-k;i++)
cout<<g[i];
cout<<endl;
cout<<"h:";
for(文件尾:
ndex=0;index<n-k;index++)
cout<<w[index];
cout<<endl;
*/
//***********************************
bool e=1;
for(index=0;index<=n-k-1;index++)
{
e=(w[index]==0)&&e;
}
if(e==1)
{
for(index=0;index<n;index++)
{
c[index]=r[index];
}
return;
}
//***************************************
e=1;
int shift=0;
for(index=0;index<=n-k-1;index++)
{
e=(w[index]==s[index])&e;
}
while(e==0)
{
w_temp=w[0];
for(index=0;index<=n-k-2;index++)
{
w[index]=(w_temp*g[index+1]+w[index+1])%2;
}
w[n-k-1]=(w_temp*g[n-k]+e)%2;
e=1;
for(index=0;index<=n-k-1;index++)
{
e=(w[index]==s[index])&e;
}
shift++;
}
w_temp=w[0];
for(index=0;index<=n-k-2;index++)
{
w[index]=(w_temp*g[index+1]+w[index+1])%2;
}
w[n-k-1]=(w_temp*g[n-k]+e)%2;
e=1;
for(index=0;index<=n-k-1;index++)
{
e=(w[index]==s[index])&e;
}
for(index=0;index<n;index++)
{
c[index]=(r[index]+(index==shift))%2;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -