fec基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010643777/article/details/85038582

 昨天休息了一下,思考一下可以研究的点,觉得这个fec还可以,就找了一点资料研究一下。
 先跑点题,闲扯一会。在找资料的过程中,能找到的资料就很少,就有点感叹。科研为什么弱呢? 可以看下90年代的论文,那水平略等于今天的一篇博客。这是积贫积弱到现在。
 [1]中有段代码,求解伽罗华域的生成空间的。举的例子是GF(256),使用的本原多项式 P ( x ) = x 8 + x 5 + x 3 + x 2 + 1 P(x)=x^8+x^5+x^3+x^2+1 。伽罗华域上的多项式乘法,其结果需要mod P(x),可以通过以下方式简化计算。首先,考虑 x 8 x^8 x 8 m o d P ( x ) = P ( x ) x 8 = x 5 + x 3 + x 2 + 1 x^8 mod P(x) = P(x) – x^8 = x^5 + x^3 +x^2 +1 。这个可以使用二进制数表示, 就是 x 8 x^8 可以使用0b101101表示。而 x 9 = x 8 x x^9=x^8*x ,就是对应的将 x 8 x^8 二进制数据左移一位得到 x 9 x^9 。但是 x 11 = x 10 x = x 8 + x 6 + x 5 + x 3 x^{11}=x^{10}*x=x^8+x^6+x^5+x^3 ,最高位的 x 8 x^8 被$ x^5+ x^3 +x^2 +1 a l p h a T o M M , 表示,就是代码里的alphaToMM,剩下的就是 (alphaTo[i-1]&0xEF)<<1)=(alphaTo[i-1]^128)<<1) ,但是还需要整理,系数为偶数的项置零,这里的加法就是异或运算,就是代码中给出的计算方法。当 alphaTo[i-1]>128 时, alphaTo[i]=alphaTo[MM]^(alphaTo[i-1]^128)<<1)$

生成元素 多项式表示 二进制表示
0 x 0 x^0 0b00000000
x 1 x^1 x 1 x^1 0b00000001
x 2 x^2 x 2 x^2 0b00000010
x 7 x^7 x 7 x^7 0b10000000
x 8 x^8 $ x^5 + x^3 +x^2 +1$ 0b00101101
x 9 x^9 x 6 + x 4 + x 3 + x x^6+x^4+x^3+x 0b01011010
x 10 x^{10} x 7 + x 5 + x 4 + x 2 x^7+x^5+x^4+x^2 0b10110100
int MM = 8;
int NN = 255;
int alphaToMM = 45;//α^8=α^5+α^3+α^2+1
int* alphaTo = new int[NN+1];
int* expOf = new int[NN+1];

alphaTo[MM] = alphaToMM;
expOf[alphaToMM] = MM;
alphaTo[NN] = 0;
expOf[0] = NN;

int i, shift;
shift = 1;
for(i=0; i<MM; i++){
    alphaTo[i] = shift;//2^i
    expOf[alphaTo[i]] = i;
    shift <<= 1;
}
shift = 128;
for(i=MM+1; i<NN; i++){
    if(alphaTo[i-1] >= shift){
        alphaTo[i] = alphaTo[MM] ^ ((alphaTo[i-1]^shift)<<1);//alphaTo[i-1]*alpha+alpha^8
    }else{
        alphaTo[i] = alphaTo[i-1]<<1;
    }
    expOf[alphaTo[i]] = i;
}

[1]伽罗华域运算
[2]伽罗华域(Galois Field)上的四则运算
[3]GF(256) table https://codyplanteen.com/assets/rs/gf256_log_antilog.pdf

猜你喜欢

转载自blog.csdn.net/u010643777/article/details/85038582