我想知道如何在数字中切换替代位?
例如,如果数字是1100 1001 结果应该是1001 1100
答案 0 :(得分:2)
使用交替的位掩码进行异或运行:
11001001 ^ 01010101
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
试试这个:
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