宏实现交换奇偶位

思路

用0xAAAAAAAA与x相与求的奇数位上数字(偶数位上数字为0)
用0x 55555555 与x相与求的偶数位上数字(奇数位上数字为0)

oddVal右移一位 even左移一位 相加即可。

代码

#define EXCHANGE(num) ((num&(0x55555555))<<1)|((num&(0xaaaaaaaa))>>1)
#include <stdio.h>

int main()
{
	printf("%d\n", EXCHANGE(10));

	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/114065984