如何交换位位置值12 34 56 78?

时间:2010-08-03 13:14:56

标签: c

Ex:与二进制值1010相似,然后在交换对位位置值0101

之后

6 个答案:

答案 0 :(得分:8)

int pairwise_bit_swap(int a) {
    return ((a & 0x55555555L) << 1) | ((a & 0xAAAAAAAAL) >> 1);
}

答案 1 :(得分:1)

unsigned char swapped = ((original & 85) << 1) | ((original & 170) >> 1);

答案 2 :(得分:0)

您可以使用提到的方法here

答案 3 :(得分:0)

您可以使用&gt;&gt;改变位。

答案 4 :(得分:0)

如果你想将奇数位置位交换为偶数位置(如交换对位1,2,3,5,6和7 8)

unsigned char a,x,y,z;
a = 2 + 4 + 8 + 128;
x = a&amp; 170;
y = a&amp; 85;
z =(x>&gt; 1)|(y <&lt; 1);

Z就是答案。

同样我们可以交换16位等等。请详细说明上面的示例场景...

答案 5 :(得分:0)

((x << 1) & 0xAAAAAAAA) |( (x >>1) & 0x55555555)

其中x为数字。