题目:写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
假设我们举例:10
那么他的二进制就是:00000000 00000000 00000000 00001010
交换以后组成的新的数就是 5
怎么用写这个宏呢?
1.分别拿出奇数位和偶数位
1.1 用按位与拿到奇数位的值
1.2 用按位与拿到偶数位的值
2.用位移操作符,取奇数位的向左移动一位,取偶数位的向右移一位
ps:这样操作是没错的不会因为移动而丢失数值,因为取奇数的最左边一定是0不可能是1,同理取偶数位的也同样是
这里举取偶数的为例:
因为一个整形是32位,也就是4个字节
所以我们转换成代码就要
3.把取奇偶位的值按位或
最后注意宏不要吝啬括号!!!