このコードは、unsigned long
ベクトル変数cR1
をNB_ERRORS
数値に変換します (a
変数にこれらの数値を出力します)。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int EXT_DEGREE = 8;
int NB_ERRORS = 8;
int BIT_SIZE_OF_LONG = 32;
typedef unsigned short gf_t;
int main(void){
int j, k, l;
gf_t a;
unsigned long cR1 [] = {418636844,2037720909}; //example
for (l = 0; l < NB_ERRORS; ++l) {
k = (l * EXT_DEGREE) / BIT_SIZE_OF_LONG;
j = (l * EXT_DEGREE) % BIT_SIZE_OF_LONG;
a = cR1[k] >> j;
if(j + EXT_DEGREE > BIT_SIZE_OF_LONG)
a ^= cR1[k + 1] << (BIT_SIZE_OF_LONG - j);
a &= ((1 << EXT_DEGREE) - 1);
printf("a = %d\n", a);
}
たとえば、次の 2 つの要素を持つ cR1 配列があります。
0,0,1,1,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,0,0,0
1,0,1,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,1,1,1,1,0
そのコードを実行すると、次のようになります。
a = 44
a = 228
a = 243
a = 24
a = 77
a = 39
a = 117
a = 121
このコードは右から左に変換します。左から右に変換するように変更します。これはどこで変更できますか?