题目:
如题,交换一个整数二进制表示中,奇数位相邻的偶数位交换。如n=10101010, 则交换后的值m = 01010101.
解析:
假设n=abcdefgh,则可以首先通过获取两个值m1和m2,其中m1 = a0c0e0g0, m2 = 0b0d0f0h,最后所求的值即为m = m1 | m2。要获取m1其实很简单,m1 = n & 0xaaaa;同理,获取m2 = n & 0x5555。
代码:
/*
*交换整数n的奇数位和偶数位的二进制位值
*此处假设int为32位
*/
int swapOddEvenBits(int n)
{
return (n & 0xaaaaaaaa) | (n & 0x55555555);
}
本文详细介绍了如何使用简单的位运算技巧来交换整数二进制表示中奇数位和偶数位的值。通过将整数分为两部分m1和m2,分别操作后再组合起来得到最终结果。
481

被折叠的 条评论
为什么被折叠?



