FEC纠错码
参考文章1:https://blog.youkuaiyun.com/qq_41196472/article/details/114284108
参考文章2:https://zhuanlan.zhihu.com/p/103888948
生成域内各个元素程序如下:
/*
* @Author: Qyyy
* @Date: 2021-07-29 16:07:58
* @LastEditTime: 2021-08-04 15:19:01
* @LastEditors: Qyyy
* @Description: 生成指定位数的有限域元素,只从1开始到2^n - 1截至,需要自行补充一个0
* @FilePath: /测试文件/GF(2**8)/gf256_gene.c
*/
#include <stdio.h>
#include <math.h>
#define GF_NUM 256 /*有限域元素的个数 2^8*/
#define GF_GENER_POLY 29 /*本原多项式 GF256 为 x^4 + x^3 + x^2 + 1, 二进制为00011101,十进制为29*/
int main()
{
int i, j;
int buf[GF_NUM];
int dec = 1;/*十进制输出 有限域初始元素,设置为1*/
buf[0] = 1;
for (i = 1; i < GF_NUM - 1; i++) {
dec = dec * 2;
if (dec > GF_NUM - 1) { /*1_0000_0000 = 256 有溢出位则进入循环 其他长度需要修改成对应数字*/
dec = (dec & (GF_NUM - 1)) ^ GF_GENER_POLY; /*数据将溢出位置零后,对本原多项式异或(与当前数值异或)得到下一数据*/
}
buf[i] = dec;
}
for (j = 0; j < GF_NUM - 1; ++j) {
printf("%d ", buf[j]);
}
printf("\n");
return 0;
}