Я пытаюсь определить индекс элемента в основной форме столбца и не могу найти формулу для этого. Когда я назначаю D упакованной матрице
c[i+j*column] = D
получается переопределить существующие элементы. Например, при наличии матрицы 4 * 4, если упаковка в 2 бита, после того, как будет получен доступ к первому элементу из последней строки, мой алгоритм переопределит следующую позицию в матрице (первый элемент во втором столбце). Есть предложения?
void pack(int n, int *A, int chuncksize){
int i,j;
unsigned int D = 0;
int *c = malloc(n*chuncksize*sizeof(int));
int counter = 0;
for(i = 0; i<n; ++i){
for (j = 0; j < n; ++j)
{
D = (D<<1)|A[i*n+j];
if(j>0 && j%chuncksize!=0){
int column =j*counter +1;
c[i+j*column] = D;
D = 0;
counter = counter+1;
}
}
counter = 0;
}
}