📄 bchcode.cpp
字号:
{1,1,0,0,0,1,0,1,0,0,9,14},
{0,0,1,0,0,1,0,0,1,1,9,15},
{1,0,1,1,1,0,0,1,0,0,9,16},
{0,0,0,1,1,0,1,0,1,1,9,17},
{1,0,1,0,0,1,1,0,0,0,9,18},
{0,0,0,1,0,1,0,1,0,1,9,19},
{1,0,1,0,0,0,0,1,1,1,9,20},
{1,1,1,1,1,0,1,1,1,0,9,21},
{0,0,1,1,1,0,1,1,1,0,9,22},
{0,1,0,1,1,0,1,1,1,0,9,23},
{0,1,1,0,1,0,1,1,1,0,9,24},
{0,1,1,1,0,0,1,1,1,0,9,25},
{0,1,1,1,1,1,1,1,1,0,9,26},
{0,1,1,1,1,0,0,1,1,0,9,27},
{0,1,1,1,1,0,1,0,1,0,9,28},
{0,1,1,1,1,0,1,1,0,0,9,29},
{0,1,1,1,1,0,1,1,1,1,9,30},
{1,1,0,0,1,1,1,0,0,0,10,11},
{1,0,1,0,1,0,0,1,0,0,10,12},
{1,0,0,1,1,0,1,0,1,0,10,13},
{1,0,0,0,0,0,1,1,0,1,10,14},
{0,1,1,0,0,0,1,0,1,0,10,15},
{1,1,1,1,1,1,1,1,0,1,10,16},
{0,1,0,1,1,1,0,0,1,0,10,17},
{1,1,1,0,0,0,0,0,0,1,10,18},
{0,1,0,1,0,0,1,1,0,0,10,19},
{1,1,1,0,0,1,1,1,1,0,10,20},
{1,0,1,1,1,1,0,1,1,1,10,21},
{0,1,1,1,1,1,0,1,1,1,10,22},
{0,0,0,1,1,1,0,1,1,1,10,23},
{0,0,1,0,1,1,0,1,1,1,10,24},
{0,0,1,1,0,1,0,1,1,1,10,25},
{0,0,1,1,1,0,0,1,1,1,10,26},
{0,0,1,1,1,1,1,1,1,1,10,27},
{0,0,1,1,1,1,0,0,1,1,10,28},
{0,0,1,1,1,1,0,1,0,1,10,29},
{0,0,1,1,1,1,0,1,1,0,10,30},
{0,1,1,0,0,1,1,1,0,0,11,12},
{0,1,0,1,0,1,0,0,1,0,11,13},
{0,1,0,0,1,1,0,1,0,1,11,14},
{1,0,1,0,1,1,0,0,1,0,11,15},
{0,0,1,1,0,0,0,1,0,1,11,16},
{1,0,0,1,0,0,1,0,1,0,11,17},
{0,0,1,0,1,1,1,0,0,1,11,18},
{1,0,0,1,1,1,0,1,0,0,11,19},
{0,0,1,0,1,0,0,1,1,0,11,20},
{0,1,1,1,0,0,1,1,1,1,11,21},
{1,0,1,1,0,0,1,1,1,1,11,22},
{1,1,0,1,0,0,1,1,1,1,11,23},
{1,1,1,0,0,0,1,1,1,1,11,24},
{1,1,1,1,1,0,1,1,1,1,11,25},
{1,1,1,1,0,1,1,1,1,1,11,26},
{1,1,1,1,0,0,0,1,1,1,11,27},
{1,1,1,1,0,0,1,0,1,1,11,28},
{1,1,1,1,0,0,1,1,0,1,11,29},
{1,1,1,1,0,0,1,1,1,0,11,30},
{0,0,1,1,0,0,1,1,1,0,12,13},
{0,0,1,0,1,0,1,0,0,1,12,14},
{1,1,0,0,1,0,1,1,1,0,12,15},
{0,1,0,1,0,1,1,0,0,1,12,16},
{1,1,1,1,0,1,0,1,1,0,12,17},
{0,1,0,0,1,0,0,1,0,1,12,18},
{1,1,1,1,1,0,1,0,0,0,12,19},
{0,1,0,0,1,1,1,0,1,0,12,20},
{0,0,0,1,0,1,0,0,1,1,12,21},
{1,1,0,1,0,1,0,0,1,1,12,22},
{1,0,1,1,0,1,0,0,1,1,12,23},
{1,0,0,0,0,1,0,0,1,1,12,24},
{1,0,0,1,1,1,0,0,1,1,12,25},
{1,0,0,1,0,0,0,0,1,1,12,26},
{1,0,0,1,0,1,1,0,1,1,12,27},
{1,0,0,1,0,1,0,1,1,1,12,28},
{1,0,0,1,0,1,0,0,0,1,12,29},
{1,0,0,1,0,1,0,0,1,0,12,30},
{0,0,0,1,1,0,0,1,1,1,13,14},
{1,1,1,1,1,0,0,0,0,0,13,15},
{0,1,1,0,0,1,0,1,1,1,13,16},
{1,1,0,0,0,1,1,0,0,0,13,17},
{0,1,1,1,1,0,1,0,1,1,13,18},
{1,1,0,0,1,0,0,1,1,0,13,19},
{0,1,1,1,1,1,0,1,0,0,13,20},
{0,0,1,0,0,1,1,1,0,1,13,21},
{1,1,1,0,0,1,1,1,0,1,13,22},
{1,0,0,0,0,1,1,1,0,1,13,23},
{1,0,1,1,0,1,1,1,0,1,13,24},
{1,0,1,0,1,1,1,1,0,1,13,25},
{1,0,1,0,0,0,1,1,0,1,13,26},
{1,0,1,0,0,1,0,1,0,1,13,27},
{1,0,1,0,0,1,1,0,0,1,13,28},
{1,0,1,0,0,1,1,1,1,1,13,29},
{1,0,1,0,0,1,1,1,0,0,13,30},
{1,1,1,0,0,0,0,1,1,1,14,15},
{0,1,1,1,1,1,0,0,0,0,14,16},
{1,1,0,1,1,1,1,1,1,1,14,17},
{0,1,1,0,0,0,1,1,0,0,14,18},
{1,1,0,1,0,0,0,0,0,1,14,19},
{0,1,1,0,0,1,0,0,1,1,14,20},
{0,0,1,1,1,1,1,0,1,0,14,21},
{1,1,1,1,1,1,1,0,1,0,14,22},
{1,0,0,1,1,1,1,0,1,0,14,23},
{1,0,1,0,1,1,1,0,1,0,14,24},
{1,0,1,1,0,1,1,0,1,0,14,25},
{1,0,1,1,1,0,1,0,1,0,14,26},
{1,0,1,1,1,1,0,0,1,0,14,27},
{1,0,1,1,1,1,1,1,1,0,14,28},
{1,0,1,1,1,1,1,0,0,0,14,29},
{1,0,1,1,1,1,1,0,1,1,14,30},
{1,0,0,1,1,1,0,1,1,1,15,16},
{0,0,1,1,1,1,1,0,0,0,15,17},
{1,0,0,0,0,0,1,0,1,1,15,18},
{0,0,1,1,0,0,0,1,1,0,15,19},
{1,0,0,0,0,1,0,1,0,0,15,20},
{1,1,0,1,1,1,1,1,0,1,15,21},
{0,0,0,1,1,1,1,1,0,1,15,22},
{0,1,1,1,1,1,1,1,0,1,15,23},
{0,1,0,0,1,1,1,1,0,1,15,24},
{0,1,0,1,0,1,1,1,0,1,15,25},
{0,1,0,1,1,0,1,1,0,1,15,26},
{0,1,0,1,1,1,0,1,0,1,15,27},
{0,1,0,1,1,1,1,0,0,1,15,28},
{0,1,0,1,1,1,1,1,1,1,15,29},
{0,1,0,1,1,1,1,1,0,0,15,30},
{1,0,1,0,0,0,1,1,1,1,16,17},
{0,0,0,1,1,1,1,1,0,0,16,18},
{1,0,1,0,1,1,0,0,0,1,16,19},
{0,0,0,1,1,0,0,0,1,1,16,20},
{0,1,0,0,0,0,1,0,1,0,16,21},
{1,0,0,0,0,0,1,0,1,0,16,22},
{1,1,1,0,0,0,1,0,1,0,16,23},
{1,1,0,1,0,0,1,0,1,0,16,24},
{1,1,0,0,1,0,1,0,1,0,16,25},
{1,1,0,0,0,1,1,0,1,0,16,26},
{1,1,0,0,0,0,0,0,1,0,16,27},
{1,1,0,0,0,0,1,1,1,0,16,28},
{1,1,0,0,0,0,1,0,0,0,16,29},
{1,1,0,0,0,0,1,0,1,1,16,30},
{1,0,1,1,1,1,0,0,1,1,17,18},
{0,0,0,0,1,1,1,1,1,0,17,19},
{1,0,1,1,1,0,1,1,0,0,17,20},
{1,1,1,0,0,0,0,1,0,1,17,21},
{0,0,1,0,0,0,0,1,0,1,17,22},
{0,1,0,0,0,0,0,1,0,1,17,23},
{0,1,1,1,0,0,0,1,0,1,17,24},
{0,1,1,0,1,0,0,1,0,1,17,25},
{0,1,1,0,0,1,0,1,0,1,17,26},
{0,1,1,0,0,0,1,1,0,1,17,27},
{0,1,1,0,0,0,0,0,0,1,17,28},
{0,1,1,0,0,0,0,1,1,1,17,29},
{0,1,1,0,0,0,0,1,0,0,17,30},
{1,0,1,1,0,0,1,1,0,1,18,19},
{0,0,0,0,0,1,1,1,1,1,18,20},
{0,1,0,1,1,1,0,1,1,0,18,21},
{1,0,0,1,1,1,0,1,1,0,18,22},
{1,1,1,1,1,1,0,1,1,0,18,23},
{1,1,0,0,1,1,0,1,1,0,18,24},
{1,1,0,1,0,1,0,1,1,0,18,25},
{1,1,0,1,1,0,0,1,1,0,18,26},
{1,1,0,1,1,1,1,1,1,0,18,27},
{1,1,0,1,1,1,0,0,1,0,18,28},
{1,1,0,1,1,1,0,1,0,0,18,29},
{1,1,0,1,1,1,0,1,1,1,18,30},
{1,0,1,1,0,1,0,0,1,0,19,20},
{1,1,1,0,1,1,1,0,1,1,19,21},
{0,0,1,0,1,1,1,0,1,1,19,22},
{0,1,0,0,1,1,1,0,1,1,19,23},
{0,1,1,1,1,1,1,0,1,1,19,24},
{0,1,1,0,0,1,1,0,1,1,19,25},
{0,1,1,0,1,0,1,0,1,1,19,26},
{0,1,1,0,1,1,0,0,1,1,19,27},
{0,1,1,0,1,1,1,1,1,1,19,28},
{0,1,1,0,1,1,1,0,0,1,19,29},
{0,1,1,0,1,1,1,0,1,0,19,30},
{0,1,0,1,1,0,1,0,0,1,20,21},
{1,0,0,1,1,0,1,0,0,1,20,22},
{1,1,1,1,1,0,1,0,0,1,20,23},
{1,1,0,0,1,0,1,0,0,1,20,24},
{1,1,0,1,0,0,1,0,0,1,20,25},
{1,1,0,1,1,1,1,0,0,1,20,26},
{1,1,0,1,1,0,0,0,0,1,20,27},
{1,1,0,1,1,0,1,1,0,1,20,28},
{1,1,0,1,1,0,1,0,1,1,20,29},
{1,1,0,1,1,0,1,0,0,0,20,30},
{1,1,0,0,0,0,0,0,0,0,21,22},
{1,0,1,0,0,0,0,0,0,0,21,23},
{1,0,0,1,0,0,0,0,0,0,21,24},
{1,0,0,0,1,0,0,0,0,0,21,25},
{1,0,0,0,0,1,0,0,0,0,21,26},
{1,0,0,0,0,0,1,0,0,0,21,27},
{1,0,0,0,0,0,0,1,0,0,21,28},
{1,0,0,0,0,0,0,0,1,0,21,29},
{1,0,0,0,0,0,0,0,0,1,21,30},
{0,1,1,0,0,0,0,0,0,0,22,23},
{0,1,0,1,0,0,0,0,0,0,22,24},
{0,1,0,0,1,0,0,0,0,0,22,25},
{0,1,0,0,0,1,0,0,0,0,22,26},
{0,1,0,0,0,0,1,0,0,0,22,27},
{0,1,0,0,0,0,0,1,0,0,22,28},
{0,1,0,0,0,0,0,0,1,0,22,29},
{0,1,0,0,0,0,0,0,0,1,22,30},
{0,0,1,1,0,0,0,0,0,0,23,24},
{0,0,1,0,1,0,0,0,0,0,23,25},
{0,0,1,0,0,1,0,0,0,0,23,26},
{0,0,1,0,0,0,1,0,0,0,23,27},
{0,0,1,0,0,0,0,1,0,0,23,28},
{0,0,1,0,0,0,0,0,1,0,23,29},
{0,0,1,0,0,0,0,0,0,1,23,30},
{0,0,0,1,1,0,0,0,0,0,24,25},
{0,0,0,1,0,1,0,0,0,0,24,26},
{0,0,0,1,0,0,1,0,0,0,24,27},
{0,0,0,1,0,0,0,1,0,0,24,28},
{0,0,0,1,0,0,0,0,1,0,24,29},
{0,0,0,1,0,0,0,0,0,1,24,30},
{0,0,0,0,1,1,0,0,0,0,25,26},
{0,0,0,0,1,0,1,0,0,0,25,27},
{0,0,0,0,1,0,0,1,0,0,25,28},
{0,0,0,0,1,0,0,0,1,0,25,29},
{0,0,0,0,1,0,0,0,0,1,25,30},
{0,0,0,0,0,1,1,0,0,0,26,27},
{0,0,0,0,0,1,0,1,0,0,26,28},
{0,0,0,0,0,1,0,0,1,0,26,29},
{0,0,0,0,0,1,0,0,0,1,26,30},
{0,0,0,0,0,0,1,1,0,0,27,28},
{0,0,0,0,0,0,1,0,1,0,27,29},
{0,0,0,0,0,0,1,0,0,1,27,30},
{0,0,0,0,0,0,0,1,1,0,28,29},
{0,0,0,0,0,0,0,1,0,1,28,30},
{0,0,0,0,0,0,0,0,1,1,29,30}};
bool BCH::Decode(bvec Ncode, bvec &unKcode)
{
if (Ncode.size() != n)
return false;
unKcode.resize(k);
bvec cGuess; //估计出来的发送码向量
cGuess.resize(n);
//寄存器清0
for (int i = 0;i < n-k; i++)
{
m_shiftReg[i] = 0;
m_backReg[i] = 0;
}
bit bGateOut = 0; //与门输出
//模拟除法电路,求余式.
//一共需要2n拍时钟
for (i = 0;i < n ;i ++)
{
bit temp = 0;
//求余式第一位寄存器联入
if (i < n)
m_shiftReg[0] = (Ncode[i] + bGateOut) % 2;
else
m_shiftReg[0] = bGateOut;
if (m_gx[0] == 1)
m_shiftReg[0] = (m_shiftReg[0] + m_backReg[n-k-1]) % 2;
for (int j = 1; j < n-k; j++)
{
if (m_gx[j] == 1)
m_shiftReg[j] = (m_backReg[n-k-1] + m_backReg[j-1]) % 2;
else
m_shiftReg[j] = m_backReg[j-1];
}
//拷贝过来,相当于一次时钟触发
m_backReg = m_shiftReg;
}
cGuess = Ncode;
bool bNoErr = true;
for (i = 0;i < n-k; i++)
{
if (m_shiftReg[i] == 1)
{
bNoErr = false;
break;
}
}
if (bNoErr)
goto uncode_msg;
for(i = 0;i < 496;i++)
{
bool bFind = true;
for(int j = 0;j < 10; j++)
{
if (S[i][j] != m_backReg[9-j])
{
bFind = false;
break;
}
}
if (bFind)
{
//一位错误
if (S[i][10] == S[i][11])
cGuess[S[i][10]] = (cGuess[S[i][10]] + 1)%2;
else //二位错误
{
cGuess[S[i][10]] = (cGuess[S[i][10]] + 1)%2;
cGuess[S[i][11]] = (cGuess[S[i][11]] + 1)%2;
}
break;
}
}
uncode_msg:
for (i = 0;i < k ; i++)
unKcode[i] = cGuess[i];
return true;
}
/*+++
系统码编码器
+++*/
bool BCH::SysEncode(bvec unKcode, bvec & Ncode)
{
if (unKcode.size() != k)
return false;
Ncode.resize(n);
//寄存器清0
//memset(m_shiftReg, 0, sizeof(bit)*(n-k));
for (int i = 0;i < n-k; i++)
{
m_shiftReg[i] = 0;
m_backReg[i] = 0;
}
// bit m ; //输入信息位
bit feedback; //反馈信息位
for ( i = 0;i < n; i++) //模拟n个时钟节拍
{
//反馈信息位,前k拍为信息,后n-k拍无输入
if (i < k)
feedback = (unKcode[i] + m_backReg[n-k-1]) % 2;
else
feedback = 0;
//DO寄存器连接
if (m_gx[0] == 1)
m_shiftReg[0] = feedback ;
//对寄存器进行移位操作. 移位的同时带上g(x)系数
for(int j = 1;j < n-k ; j++)
{
if (m_gx[j] == 1)
m_shiftReg[j] = (feedback + m_backReg[j-1]) % 2;
else
m_shiftReg[j] = m_backReg[j-1];
}
//输出部分
if (i < k)
Ncode[i] = unKcode[i];
else
Ncode[i] = m_backReg[n-k-1];
//拷贝过来,相当于一次时钟触发
m_backReg = m_shiftReg;
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -