如何在c中切换数字的替代位

时间:2013-06-05 08:47:33

标签: c bits

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

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

3 个答案:

答案 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;
}

您可以将其更改为intlong