题目:将整数的奇偶位互换
/*
- 1001 奇偶位互换后为 0110
- ① 1001 & 32个(1010…1010) 目的:保留奇数位, 偶数位结果为0
- ② 1001 & 32个(0101…0101) 目的:保留偶数位, 奇数位结果为0
- ①的结果右移 ^ ②的结果左移 实现奇偶互换
- ^ (异或操作)
- */
public class 将整数的奇偶位互换 {
public static void main(String[] args) {
int x=9;
int ou=x&0x55555555; //和0101与运算,转换为16进制 每4位2进制对应一位16进制数,共32位
int ji=x&0xaaaaaaaa; //和1010与运算 ,转换为16进制
x= (ji>>1)^(ou<<1);
System.out.println(x);
}
}