写一个宏,将一个整数的二进制位的奇数位和偶数位交换

发布时间:2024年01月19日
#define SWAP_BIT(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << 1))

#include <stdio.h>

int main()
{
	int num = 7;
	printf("%d\n", SWAP_BIT(num));

	return 0;
}

?将num &(0xAAAAAAAA)(10101010101010101010101010101010),可以得到原来num的偶数位不变,奇数位全为0,将其右移一位变成奇数位;

将num & (0x55555555)(01010101010101010101010101010101),可以得到原来num的奇数位不变,偶数位全为0,将其左移一位变成偶数位;

将左右移的数进行按位或,得到奇数位偶数位交换后的数。

文章来源:https://blog.csdn.net/cookies_s_/article/details/135697542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。