Java中的XOR运算符

The XOR Operator in Java

1.概述

在这个简短的教程中,我们将学习JavaXOR运算符。我们将通过一些有关XOR操作的理论,然后我们将了解如何在Java中实现它们。

2. XOR运算符

让我们首先回顾一下XOR操作的语义。 XOR逻辑运算(或,异或)采用两个布尔操作数,并且仅当操作数不同时才返回true。因此,如果两个操作数具有相同的值,则返回false。

因此,例如,当我们必须同时检查两个不成立的条件时,可以使用XOR运算符。

让我们考虑两个条件,A和B。然后,下表显示了A XOR B的可能值:

XOR Operator Table

XOR Operator Table

A XOR B操作等效于(A AND!B)或(!A AND B)。为了清楚起见,已经包括了括号,但是括号是可选的,因为AND运算符优先于OR运算符。

3.如何用Java做到这一点?

现在,让我们看看如何用Java表达XOR操作。当然,我们可以使用&&和||运算符,但这可能有点罗word,正如我们将要看到的。

想象一下Car类具有两个布尔属性:柴油和手动。现在,让我们说说我们想知道这辆车是柴油车还是手动车,而不是两者兼而有之。

让我们使用&&和||进行检查运营商:

1
2
Car car = Car.dieselAndManualCar();
boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual());

这有点长,特别是考虑到我们有一个替代方法– Java XOR运算符,用^符号表示。这是按位运算符,即比较两个值的匹配位以返回结果的运算符。在XOR情况下,如果相同位置的两个位具有相同的值,则结果位将为0。否则为1。

因此,我们可以直接使用^运算符来代替繁琐的XOR实现:

1
2
Car car = Car.dieselAndManualCar();
boolean dieselXorManual = car.isDiesel() ^ car.isManual();

如我们所料,^运算符使我们在表达XOR操作时更加简洁。

最后,值得一提的是,XORoperator像其他按位运算符一样,适用于每种基本类型。例如,让我们考虑两个整数1和3,它们的二进制表示分别为00000001和000000011。然后,在它们之间使用XOR运算符将得出整数2:

1
assertThat(1 ^ 3).isEqualTo(2);

在这两个数字中,只有第二个位不同,因此,该位的XOR运算符的结果将为1。所有其他位相同,因此它们的按位XOR结果为0,得出的最终值为00000010-的二进制表示。整数2。

4。结论

在本文中,我们了解了JavaXOR运算符。我们看到它提供了表达XOR操作的简洁方法。

像往常一样,可以在GitHub上找到本文的完整代码。