@Test
/** * 思路:将原数的二进制数分别保留出奇数位数和偶数位数,然后再求异或实现奇偶互换 */
public void test6() {
int a = 21;
//输出一个数字的二进制形式用Integer.toBinaryString()方法
System.out.println(Integer.toBinaryString(a));
//16进制表示方法 0x开头
//0xAAAAAAAA=10101010101010101010101010101010
//0x55555555=01010101010101010101010101010101
//a & 0xAAAAAAAA表示保留原数的奇数来做新数的偶数
//a & 0x55555555表示保留原数的偶数来做新数的奇数
int ou= a & 0xAAAAAAAA;
int ji = a & 0x55555555;
//奇数左移偶数右移
int result = (ji << 1) ^ (ou >> 1);
System.out.println(Integer.toBinaryString(result));
}
~~~