首页 > 其他分享 >如何用一个宏将一个数字的奇数位和偶数位交换

如何用一个宏将一个数字的奇数位和偶数位交换

时间:2022-11-04 11:11:01浏览次数:54  
标签:奇数 宏将 0101 偶数 num 1010


      如何用一个宏将一个数字的奇数位和偶数位交换呢?

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进制

如何用一个宏将一个数字的奇数位和偶数位交换_十进制

我们试一下前面举的例子

如何用一个宏将一个数字的奇数位和偶数位交换_数位_02

标签:奇数,宏将,0101,偶数,num,1010
From: https://blog.51cto.com/u_15861560/5822278

相关文章