- 23
- 0
- 约8.97千字
- 约 10页
- 2018-11-11 发布于安徽
- 举报
WORD格式可编辑
专业技术分享
BCH码的编译码程序
#include
#include
#include
int m, n, length, k, t, d;
int p[21];
int alpha_to[1048576], index_of[1048576], g[548576];
int recd[1048576], data[1048576], bb[548576];
int seed;
int numerr, errpos[1024], decerror = 0;
void
read_p()
{
int i, ninf;
printf(\\nEnter a value of m such that the code length is\\n);
printf(2**(m-1) - 1 length = 2**m - 1\\n\\n);
do {
printf(Enter m (between 2 and 20): );
scanf(%d, m);
} while ( !(m1) || !(m21) );
for (i=1; i p[i] = 0;
p[0] = p[m] = 1;
if (m == 2) p[1] = 1;
else if (m == 3) p[1] = 1;
else if (m == 4) p[1] = 1;
else if (m == 5) p[2] = 1;
else if (m == 6) p[1] = 1;
else if (m == 7) p[1] = 1;
else if (m == 8) p[4] = p[5] = p[6] = 1;
else if (m == 9) p[4] = 1;
else if (m == 10) p[3] = 1;
else if (m == 11) p[2] = 1;
else if (m == 12) p[3] = p[4] = p[7] = 1;
else if (m == 13) p[1] = p[3] = p[4] = 1;
else if (m == 14) p[1] = p[11] = p[12] = 1;
else if (m == 15) p[1] = 1;
else if (m == 16) p[2] = p[3] = p[5] = 1;
else if (m == 17) p[3] = 1;
else if (m == 18) p[7] = 1;
else if (m == 19) p[1] = p[5] = p[6] = 1;
else if (m == 20) p[3] = 1;
printf(p(x) = );
n = 1;
for (i = 0; i = m; i++) {
n *= 2;
printf(%1d, p[i]);
}
printf(\\n);
n = n / 2 - 1;
ninf = (n + 1) / 2 - 1;
do {
printf(Enter code length (%d length = %d): , ninf, n);
scanf(%d, length);
} while ( !((length = n)(lengthninf)) );
}
void
generate_gf()
{
register int i, mask;
mask = 1;
alpha_to[m] = 0;
for (i = 0; i m; i++) {
alpha_to[i] = mask;
index_of[alpha_to[i]] = i;
if (p[i] != 0)
alpha_to[m] ^= mask;
mask = 1;
}
index_of[alpha_to[m]] = m;
mask = 1;
for (i = m + 1; i n; i++) {
if (alpha_to[i - 1] = mask)
alpha_to[i] = alpha_to[m] ^ ((alpha_to[i - 1] ^ mask) 1);
else
alpha_to[i] = alpha_to[i - 1] 1;
index_of[alpha_to[i]] = i;
}
index_of[0]
原创力文档

文档评论(0)