异或: 相同为0,不同为1.(也可以当作"无符号相加")
数据结构与算法:异或运算_变量交换

异或满足交换律.

A ^ B ^ C ^ D =  D ^ A ^ C ^ B

不用额外变量交换两个数

public static void main(String[] args) {
        int a = 7;
        int b = 10;

        a = a ^ b;
        b = a ^ b;
        a = a ^ b;

        System.out.println(a);
        System.out.println(b);
    }

数据结构与算法:异或运算_数组_02

题目一: 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数.

public static void main(String[] args) {
        /*
        * 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数
        */
        int[] arr = {1,1,2,3,3,4,4,5,5};
        int num = 0;
        for (int i = 0; i < arr.length; i++) {
            num = arr[i]^num;
        }

        System.out.println(num);
    }

题目二: 取出一个整数中最右侧的1
数据结构与算法:异或运算_数组_03

public static void main(String[] args) {
        // 2720(二进制形式:101010100000)
        int a = 2720;
        System.out.println(a & (-a));
    }