I would like to calculate the inverse mask for unsigned char.meaning, if the source mask is 0xc0, the inverse mask should be 0x3f. This means that all bits must be inverted or inverted. I tried the following but it doesn't seem to work.
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;
}
The results obtained mask 0x3 inv mask 0xff
I can not find the error in my code.
source
share