c/c++语言开发共享C语言:写一个宏可以将一个数字的奇数位和偶数位交换

此题的解决思路为:将一个数字的奇数位提取出来并向左移动1位,偶数位提取出来并向右移动1位,将奇数位与偶数位移位后的值相加即可以实现。 例如:11—–>1011 奇数位提取出来为0001-

此题的解决思路为:将一个数字的奇数位提取出来并向左移动1位,偶数位提取出来并向右移动1位,将奇数位与偶数位移位后的值相加即可以实现。

例如:11—–>1011

奇数位提取出来为0001—->向左移动1位为0010

偶数位提取出来为1010—->向右移动1位为0101

两个移位后的值相加为0111—->输出的值为7

这样就完成了奇数位和偶数位交换。

具体代码如下:

需要注意的是宏的使用要尽可能适当的多使用括号,以防操作符的优先级影响结果。

  #include   #include   #define swap(x) ((((x)&0x55555555)<<1)+(((x)&0xaaaaaaaa)>>1))    //提取奇数位向左移动1位//提取偶数位向右移动1位  int main()  {  	int n = 11;  	int ret = swap(n);  	printf("ret = %dn", ret);  	system("pause");  	return 0;  }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607934.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐