Я хотел бы вычислить обратную маску для беззнакового символа. это означает, что если исходная маска 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;
}
Я получаю следующие результаты: маска 0x3 inv mask 0xff
Кажется, я не могу найти ошибку в своем коде.