版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_29173167/article/details/79391301
//查看两个字节的不同位
int diff(unsigned char a[4][4], unsigned char b[4][4])
{
int i, j, k;
int count = 0;
unsigned char comp = 0x1<<7;
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
{
unsigned char c;
c = a[i][j] ^ b[i][j];
comp = 0x1<<7;
for(k = 0; k < sizeof(a[i][j])*8; k++)
{
if((c & comp) != 0)
{
count ++;
}
comp = comp >> 1;
}
}
return count;
}
//给二维数组的某一位置位
void SetBit(unsigned char a[4][4], int which_bit, unsigned char set_bit)
{
int which_byte = (which_bit-1)/8;
unsigned char *p = (unsigned char *)a;
int i=0;
while(i++ <which_byte && p++);
*p &= ~(1<<(8-which_bit%8));
*p |= set_bit<<(8-which_bit%8);
}