问题描述
大概就是说,给定一个整数,让我们将这个整数的二进制形式的奇偶互换。
例如:给定9,则其二进制形式位1001,应该得到的结果为0110
解题思路
大家可以看看下面这张图,我们假定给定的数为abcdefgh
根据上图,我们可以很容以的写出实现的代码:
public static int f(int x) {
int ou = x & 0xaaaaaaaa; // 和1010 1010 1010……做与运算取出偶数位
int ji = x & 0x55555555; // 和0101 0101 0101……做与运算取出奇数位
return (ou >> 1) ^ (ji << 1);
}