萝卜建站分类信息,临清网站制作公司,广告推广赚钱,泉州网站建设开发题目要求#xff1a;
写一个宏#xff0c;可以将一个整数的二进制位的奇数位和偶数位交换。
思考内容#xff1a;
怎么确定一个二进制数位的奇数位和偶数位?且这个位上的是0还是1#xff1f; 假设#xff1a;
数字 13 的二进制数位 0000 0000 0000 0000 0000 0000 00…题目要求
写一个宏可以将一个整数的二进制位的奇数位和偶数位交换。
思考内容
怎么确定一个二进制数位的奇数位和偶数位?且这个位上的是0还是1 假设
数字 13 的二进制数位 0000 0000 0000 0000 0000 0000 0000 1101
奇偶互换后 0000 0000 0000 0000 0000 0000 0000 1110 —— 数字16
通过观察二进制的奇偶互换是将奇偶上的位数进行调整将位数上的调整可以使用 | 等符号进行。
图解 利用的特点在奇数位上放置1偶数位上放置0以来判断奇数位上是0是1
同理利用的特点在偶数位上放1奇数位上放0判断偶数位上是0是1 后分别使用1 和1进行奇偶互换在使用 | 把二者结合得到最后结果 操作符详情C语言 位操作符 | ^ ~-CSDN博客 代码实现
#define SWAP(n) ( ( (n)0x55555555 ) 1 ) | ( ( (n)0xxaaaaaaaa) 1 )
int main()
{int n;scanf(%d,n);int ret SWAP(n);printf(%d,ret);return 0;
}