liv*_*hak 6 c bit-manipulation bitmask
我想为无符号char.meaning计算一个反向掩码,如果反向掩码的原始掩码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;
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是掩码0x3 inv掩码0xff
我似乎无法在我的代码中找到错误.
为什么你不能这样做:
uint8_t mask = 0x03;
uint8_t inverse_mask = ~mask;
Run Code Online (Sandbox Code Playgroud)