⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hammingdecodingencoding.cpp

📁 vc编写的一个汉明码算法
💻 CPP
字号:
#include <iostream.h>
int main()
{
 cout<<"Please enter a code for send( 4 bit from higner bit to lower bit): "<<endl; 

  int i = 0;
 
//产生code
 int code[4] = {0};
  for(i=0;i<4;i++)
  {	cout<<"please input the code to be encoded number:"<<4-i<<endl;
    cin>>code[i];
  };
 
//测试
  for( i = 0; i < 4; i++ ){
  cout<<code[i];
 }

 //产生校验矩阵
 int H[3][7] = {
  {0,0,0,1,1,1,1},
  {0,1,1,0,0,1,1},
  {1,0,1,0,1,0,1}};
 
//产生生成矩阵
 int G[4][7] = {
  {1,1,0,1,0,0,1},
  {0,1,0,1,0,1,0},
  {1,0,0,1,1,0,0},
  {1,1,1,0,0,0,0}};

 int codeword[7] = {0};
 int errorcode[7] = {0};
  
 //产生发送码字
 int j = 0;
 cout<<endl<<"Your codeword for send is: "<<endl;
 for( j = 0; j < 7; j++ ){
  codeword[j] = (G[0][j]*code[0])^
       (G[1][j]*code[1])^
       (G[2][j]*code[2])^
       (G[3][j]*code[3]);
  cout<<codeword[j];
  errorcode[j] = codeword[j];
 }

 //给出出错位数,得到错误码
 cout<<" Please enter the error site: ";
 int errorSite;
 cin>>errorSite;
 errorcode[ errorSite - 1 ] = ( codeword[ errorSite - 1 ] + 1 ) % 2;
 cout<<" The error codeword is: " ;
 for( j = 0; j < 7; j++ ){
  cout<< errorcode[j] ;
 }

 //算出错误位并译码
 cout<< endl<<" The error site is: " <<endl;
 int error_site[3] = {0};
 for( i = 0; i < 3; i++ ){
  error_site[i] = (H[i][0]*errorcode[0])^
      (H[i][1]*errorcode[1])^
      (H[i][2]*errorcode[2])^
      (H[i][3]*errorcode[3])^
      (H[i][4]*errorcode[4])^
      (H[i][5]*errorcode[5])^
      (H[i][6]*errorcode[6]);
  cout<<error_site[i];
 }

 errorSite = error_site[0] *4 + error_site[1] * 2 + error_site[2];
 cout<<endl<<errorSite<<endl;

 
 
 codeword[ errorSite - 1 ] = ( errorcode[ errorSite - 1 ] + 1 ) % 2;
 int correct_code[7] = {0};
 correct_code[0] = codeword[6];
 correct_code[1] = codeword[5];
 correct_code[2] = codeword[4];
 correct_code[3] = codeword[2];
 correct_code[4] = codeword[3];
 correct_code[5] = codeword[1];
 correct_code[6] = codeword[0];
 cout<< "The correct code is : " ;
 for( i = 0; i < 4; i++ ){
  cout<<correct_code[i];
 }
 cout<<" isn't it? " ;
 
 
 return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -