Я хочу вычислить обратную маску для беззнакового символа

Я хотел бы вычислить обратную маску для беззнакового символа. это означает, что если исходная маска 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

Кажется, я не могу найти ошибку в своем коде.

6
задан Mysticial 4 November 2011 в 01:50
поделиться