详细步骤都在注释里
hin详细了~
public class OddChangeEven {
public static void main(String[] args) {
/*
* 思路:
* 1)获得二进制数的所有奇数位(屏蔽掉偶数位)
* 2)获得二进制数的所有偶数位(屏蔽掉奇数位)
* 3)左移,右移后进行异或运算
*
* 所谓屏蔽,就是让其为0。
* 与0相与就能消去
*
* 所谓保留
* 就是与1相与
* */
int number=25;
System.out.println(number+"二进制形式为:"+Integer.toBinaryString(number));
//获得偶数位(从右往左数)
int even_num=number&0xaaaaaaaa;//10101010...10101010的十六进制表现形式
//奇数位
int odd_num=number&0x55555555;//01010101...01010101的十六进制表现形式
//进行异或操作
int changed_num=(even_num>>1)^(odd_num<<1);
System.out.println("改变后的数字为"+changed_num);
System.out.println("二进制变现形式为:"+Integer.toBinaryString(changed_num));
}
}