我想知道如何切换数字中的替代位?
例如,如果数字是 1100 1001 结果应该是 1001 1100
使用交替位掩码进行异或运算:
11001001 ^ 01010101
尝试这个:
char toggleOddBits(char number)
{
for(int bitPos = sizeof(number) * 8 - 1 ; bitPos >= 0 ; bitPos--) {
// If bit position is odd
if ( 0 == (bitPos % 2)) {
number ^= 1 << bitPos; // Toggle bit at bitPosition
}
}
return number;
}
您可以将其更改为int
或long
int a1= 0xA9, // 1100 1001
a2= 0x9A; // 1001 1100
int mask= a1 ^ a2; // the toggling mask
// (bits different between a1 and a2)
int test= a1 ^ mask;
printf("mask= %02x, test= %02x\n", mask, test);