Как определить индекс массива, в который должны быть упакованы биты, в основной форме столбца при упаковке матрицы размера n * n - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь определить индекс элемента в основной форме столбца и не могу найти формулу для этого. Когда я назначаю 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;
    }   

}
...