什么是异或运算?

异或(xor)是一个数学运算符,它应用于逻辑运算,异或的符号为"^";它是一种基于二进制的位运算,将十进制的数转换成二进制,然后每个位置进行比较,相同为0,不同为1。这里容易跟同或运算记混,根据异或运算的特性我们可以把他记成:“无进位相加”。
案例:
1 0 1 0 0 1 0 0 1
1 1 0 0 1 0 1 0 1
————————
0 1 1 0 1 1 1 0 0

异或运算有哪些特征?

1.满足交换律和结合律,例如:a^b=b^a(交换律),(a^b)^c=a^(b^c) 结合律;
2.一个数异或自己等于0,例如:N^N=0 N^0=N (N为自然数);
3.一个不为0的数异或0的结果不变,例如:N^0=N (N为自然数不等于0);

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

 /**
 * 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数
 */
public static void findTwo(){
    //思路,使用异或运算,因为其满足交换律和结合律,a^a=0;如果偶数次就一直是0
    int[] arr={-10,2,2,2,2,3,3,6,7,6,7};
    int err=0;
    for (int i=0;i<arr.length;i++){
        err^=arr[i];
    }
    System.out.println(err);
}

2.不声明变量交换两个值

    public static void swap(int num1,int num2){
    /**
     * 底层逻辑:二进制时,无进位相加,二进制(相同为0,不同为1)
     * 满足交换律和结合律
     * 例如一个数a,a^a=0;a^0=a;
     */
    num1 = num1^num2;
    num2 = num1^num2;
    num1 = num1^num2;
}


最后修改:2022 年 08 月 31 日
如果觉得我的文章对你有用,请随意赞赏