📄 hammingdecodingencoding.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 + -