写一个宏,将一个数的奇数位和偶数位交换
来源:互联网 发布:php 两个日期相差天数 编辑:程序博客网 时间:2024/04/28 16:23
我们知道交换两个数的方法,而这个问题说的是将一个数的奇数位和偶数位交换,并且用宏实现,所以这个问题的主要障碍不是写一个宏,而是怎样提取奇数和偶数,只有提取奇数位和偶数位,那么一切都好说。现在我来说一种很神奇的方法,至少在我一筹莫展时看到后感觉很神奇。
其实说起来也没什么大不了的,就是将原数字 x 与01序列进行按位与运算,例如:13—->1101,要提取其奇数位,只需要将其与0x5555 5555(其实就是0101 0101……)按位与之后即可,同样的,要提取偶数位,只需将其与0xAAAA AAAA(其实是1010 1010……)按位与即可。
那么这个问题但这里就简单了,想要交换,只需将奇数位左移,偶数位右移一位,之后将得到的结果按位或即可。
下面我们来实现这个程序吧:
#include<stdio.h>#include<stdlib.h>#define CHANGE(x) ((x & (0x55555555))<<1)|((x & (0xAAAAAAAA))>>1)int main(){ int x=0; printf("Please Enter:"); scanf("%d",&x); printf("%d\n",CHANGE(x)); system("pause"); return 0;}
1 0
- 写一个宏将一个数的奇数位和偶数位交换
- 写一个宏,将一个数的奇数位和偶数位交换
- 写一个宏可以将一个数的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏将一个数字的奇数位和偶数位交换
- 【C语言】写一个宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位(二进制)交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 2016 11 11
- 让别人觉得那是他自己的主意
- 从对方的的立场看问题
- TCP/IP协议学习(1)—数据链路层
- 利用Office组件MODI识别图片上的文本 - [技巧攻略]
- 写一个宏,将一个数的奇数位和偶数位交换
- 从赞美和欣赏别人开始
- Spring入门
- TCP协议,UDP协议,TCP/IP的区别
- 【JZOJ4887】【NOIP2016提高A组集训第13场11.11】最大匹配
- 【数据结构与算法】计数排序
- VR系列——Oculus Audio sdk文档:二、Oculus音频SDK指南(1~2)——SDK内容和特点及要求
- GDAL学习笔记——OGR投影(一)
- 使用MODI(Microsoft Office Document Imaging)识别中文,但无法区分段落