Java实现数组转置

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 
     * 
     */

 

posted @ 2020-07-03 16:30  s硕s  阅读(1015)  评论(0编辑  收藏  举报