我想计算一个无符号字符的反掩码。意思是如果原始掩码 0xc0 反掩码应该是 0x3f。也就是说所有位都应该被翻转或反转。我已经尝试了下面但似乎没有工作。
int flipBit(int x, unsigned char position)
{
int mask = 1 << position;
return x ^ mask;
}
int main(int argc , char* argv[])
{
uint8_t mask = 0x03;
uint8_t inverse_mask = 0;
uint8_t temp = 0;
int loop = 0;
for (loop = 0; loop < 8 ; loop ++)
{
temp = flipBit(mask,loop);
inverse_mask |= temp;
}
printf("mask 0x%x inv mask 0x%x \n",mask,inverse_mask);
return 0;
}
我得到的结果是 mask 0x3 inv mask 0xff
我似乎无法在我的代码中找到错误。