将整数的奇偶位互换
题4 :将整数的奇偶位互换
例:9 化位二进制是1001
首先取出9的奇数位(0001)和偶数位(1000)
然后将奇数位右移一位(0001 << 1)偶数位左移一位(1000 >>1)
最后求其进行异或操作(0010 ^ 0100)得出结果6(0110)
public class A_004 {
/*
* 将整数的奇偶位互换
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int x = m(N);
System.out.println(x);
}
public static int m(int x) {
//a是16进制数,化为二进制为1010
int a = x & 0xaaaaaaaa; //和1010 1010 1010……做与运算取出偶数位
//5化为二进制为01010
int b = x & 0x55555555; //和0101 0101 0101……做与运算取出奇数位
return (a >> 1) ^ (b << 1);
}
}