我正在研究乘法源代码,但我不明白这个乘法函数x*A
。请用任何数字示例帮助我理解这一点?
#define BITS_PER_LONG (8 * sizeof (unsigned long))
typedef struct matrix{
int rown;//number of rows.
int coln;//number of columns.
int rwdcnt;//number of words in a row
int alloc_size;//number of allocated bytes
unsigned long *elem;//row index.
}*binmat_t;
void mat_vec_mul(unsigned long *cR, unsigned char *x, binmat_t A)
{
int i,j;
unsigned long *pt;
memset(cR, 0, A->rwdcnt*sizeof(long));
pt = A->elem;
for(i=0; i<A->rown; i++)
{
if ((x[i/8] >> (i%8)) & 1)
for (j = 0; j < A->rwdcnt; ++j)
cR[j] ^= *pt++;
else
pt += A->rwdcnt;
}
}