异或怎么用

1个回答

写回答

冉怀曼

2023-02-19 22:13

+ 关注

异或是一种二进制运算符,用符号“^”表示。它的基本规则是:如果两个二进制数的同一位不同(一个为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

举报有用(17分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号