0

我想知道如何切换数字中的替代位?

例如,如果数字是 1100 1001 结果应该是 1001 1100

4

3 回答 3

3

使用交替位掩码进行异或运算:

11001001 ^ 01010101

于 2013-06-05T08:50:01.030 回答
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;
}

您可以将其更改为intlong

于 2013-06-05T11:43:39.657 回答
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);
于 2013-06-05T09:20:20.153 回答