函数和宏实现交换二进制位

Posted 跳动的bit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数和宏实现交换二进制位相关的知识,希望对你有一定的参考价值。

📝 题述1:写一个函数,可以将一个整数的二进制位的奇数和偶数位交换(注:二进制的最低位为奇数位)

💨 输入描述:无

💨 输出描述:在屏幕上输出交换后的十进制数

🔑 核心思想:分别利用位操作得到偶数和奇数位,并让它们相加即可

#include<stdio.h>
int SwapBit(int n)
{
	return ((n & 0xaaaaaaaa) >> 1) + ((n & 0x55555555) << 1);
}
int main()
{
	int n = 10;
	int ret = SwapBit(n);
	printf("%d\\n", ret);
	return 0;
}

📝 题述2:写一个宏,可以将一个整数的二进制位的奇数和偶数位交换(注:二进制的最低位为奇数位)

💨 输入描述:无

💨 输出描述:在屏幕上输出交换后的十进制数

🔑 核心思想:同上

#include<stdio.h>
#define SwapBit(n)  ((n & 0xaaaaaaaa) >> 1) + ((n & 0x55555555) << 1)
int main()
{
	int n = 10;
	int ret = SwapBit(n);
	printf("%d\\n", ret);
	return 0;
}

以上是关于函数和宏实现交换二进制位的主要内容,如果未能解决你的问题,请参考以下文章

位运算的奇技淫巧:实现乘除交换两数判断奇偶交换符号求绝对值高低位交换二进制逆序统计二进制中 1 的个数

位运算和关于两个数交换的多种方法

位运算和关于两个数交换的多种方法

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

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

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