题目
交换某个整数的二进制码的奇偶位
解题思路
1.整数&1010_1010_1010_1010_1010_1010_1010_1010可以保留下奇数位的1
2.整数&0101_0101_0101_0101_0101_0101_0101_0101可以保留下偶数位的1
3.通过移位运算符 将奇数移动到偶数^将偶数移动到奇数 (异或)从而实现
代码实现
#include<stdio.h>
int main(){
int num;
scanf("%d",&num);
int ji=num&0xaaaaaaaa; //1010_1010_1010_1010_1010_1010_1010_1010
int ou=num&0x55555555; //0101_0101_0101_0101_0101_0101_0101_0101
printf("%d",((ji>>1)^(ou<<1)));
return 0;
}