思路:
交换奇偶位,需要先求出奇偶位上的数。接着进行交换并合并。因为计算机是用2进制存储的,所以2进制时间更快。分离时比较简单所以可以用位运算来做。
合并:偶数位右移,奇数位左移,进行或运算。
代码:
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int m1=n&0xaaaaaaaa;//16进制的101010……偶数位
int m2=n&0x55555555;//16进制的010101……奇数位
cout<<((m1>>1)|(m2<<1));//交换并合并
return 0;
}