设为首页 加入收藏

TOP

C语言:写一个宏可以将一个数字的奇数位和偶数位交换
2018-07-25 06:06:22 】 浏览:123
Tags:语言 一个 可以 一个数字 数位 交换

此题的解决思路为:将一个数字的奇数位提取出来并向左移动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 = %d\n", ret); system("pause"); return 0; }
   
  

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#之一次性清空textbox、combobox.. 下一篇c语言使用librdkafka库实现kafka..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }