符号なし文字の逆マスクを計算したいのですが、元のマスクが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;
}
私が得る結果はマスク0x3invマスク0xffです
コードにバグが見つからないようです。