如何用一个宏将一个数字的奇数位和偶数位交换
来源:互联网 发布:广州淘宝拍照的地方 编辑:程序博客网 时间:2024/06/05 04:34
如何用一个宏将一个数字的奇数位和偶数位交换呢?
eg: 比如9,它的十进制应该是 1001 改变后应该是 0110,也就是6。
首先,我们应该思考怎么得到一个数字(32个比特位)的奇数位和偶数位。
我们分析一下(&)的某些特性:
0&1=0 1&1=1
可知任何数&1都为它本身。
因此我们可以让奇数位都&1,偶数位都&0,得到所有的奇数位。
即 num&0101 0101 0101 0101 0101 0101 0101 0101
同理让偶数位&1,奇数位&0,得到所有的偶数位
即num&1010 1010 1010 1010 1010 1010 1010 1010
再考虑如何交换得到的奇数位和偶数位
这里我们可以直接用按位操作符(<<)(>>)就可以了。
偶数位右移,即 (num&0101 0101 0101 0101 0101 0101 0101 0101)>>1
奇数位左移,即 (num&1010 1010 1010 1010 1010 1010 1010 1010 )<<1
代码如下:
注:这里0x表示的是16进制
我们试一下前面举的例子
0 0
- 如何用一个宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏将一个数字的奇数位和偶数位交换
- 【C语言】写一个宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位(二进制)交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- C语言--宏将一个数字的奇数位和偶数位交换
- Hibernate 异常StrategySelectionException: Unable to resolve name EhCacheRegionFactory
- 阻止冒泡
- 数据结构——栈的学习
- 随手记录-通信协议基础知识
- Codeforces gym 101102 A dp
- 如何用一个宏将一个数字的奇数位和偶数位交换
- JS 中除cookie存储外,还有哪些存储方式?
- Servlet--登录案例及编码解决方案
- JSON学习笔记
- AndroidAnnotations注解框架
- 随手记录--网络编程
- Hibernate 异常CacheException: Another unnamed CacheManager already exists in the same VM
- hust 5239 Doom(线段树 规律OR数论 待整理 )
- mysql 视图