public class DayE2 { public static void main(String[] args) { int [] datas=new int[]{1,2,3,4,5,6}; int length=datas.length; System.out.println("源数组"); //转置前 for (int i = 0; i < datas.length; i++) { System.out.print(datas[i]); } System.out.println(""); //转置中 int number1=datas[0]; int number2=datas[length-1]; for (int i = 0; i <length/2; i++) { number1=datas[i]; number2=datas[length-i-1]; number1=number1^number2; number2=number1^number2; number1=number1^number2; datas[i]=number1; datas[length-i-1]=number2; } System.out.println("转置数组"); //转置后 for (int i = 0; i < datas.length; i++) { System.out.print(datas[i]); } } }
结果截图:
两数交换时异或操作^的实现原理
/** * 异或^操作的原理:^表示的是异或,即两个位比较相同则得0,不同则得1 * a=10 * b=20 * * a=a^b; * b=a^b; * a=a^b; * ^就是比较不同的位 * * 10的二进制是1010 * 20的二进制是10100 * 第一个a=a^b * a变成了11110,也就是30 * 1010 a * 10100 b * 11110 30 a变成30 * * 第二个b=a^b b变成01010 10 * 11110 a * 10100 b * 01010 b * * 第三个b=a^b b变成10100 20 * 11110 a * 01010 b * 10100 a * */