异或是一种二进制运算符,用符号“^”表示。它的基本规则是:如果两个二进制数的同一位不同(一个为0,一个为1),则结果为1;否则结果为0。 比如:
- 0 ^ 0 = 0
- 1 ^ 0 = 1
- 0 ^ 1 = 1
- 1 ^ 1 = 0
以下是一些异或运算的应用场景:
1. 交换两个数的值
可以使用异或运算交换两个数的值,其原理是:假设有两个值 A 和 B,通过异或运算将它们交换值。
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
2. 检测数字出现的奇偶性
可以使用异或运算检测一个数字的奇偶性。 如果一个数字的二进制表示的最后一位为0,则这个数字是偶数,否则是奇数。因此我们可以使用以下代码来检查数字x是否为偶数:
if ((x & 1) == 0) {
// x是偶数
}
3. 清零
可以使用异或运算将一个数字的某些位清零。将想要置零的位和1异或,将不想置零的位和0异或。例如,将一个数字的低n位清零,可以使用以下代码:
int x = 0b1101;
int n = 2; // 清除低2位
x = x ^ (x & ((1 << n) - 1)); // 清零低n位
4. 检测重复数字
可以使用异或运算检测一个数组中的重复数字。 对于一个数字x,它的异或值是x ^ x = 0。 因此,如果对一个数组中的所有数字进行异或运算,重复的数字将最终被抵消。
int[] arr = {2, 3, 4, 3, 1, 4, 2};
int res = 0;
for (int i = 0; i < arr.length; i++) {
res = res ^ arr[i];
}
System.out.println(res); // 输出1
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号