Introdução
O operador XOR é um operador bitwise utilizado em Java para comparar bits individuais dos operandos. Em Java, o operador XOR é representado pelo símbolo acento circunflexo (^). Ele é usado para comparar dois bits e retorna verdadeiro se e somente se os dois bits que estão sendo comparados não forem iguais.
Usando XOR com Tipos de Dados Primitivos
Em Java, o operador XOR pode ser usado com qualquer tipo de dado primitivo. Vamos verificar a tabela verdade do XOR usando tipos de dados primitivos.
public class XOR {
public static void main(String[] args) {
System.out.println("0 XOR 0: " + (0 ^ 0)); // Output: 0
System.out.println("0 XOR 1: " + (0 ^ 1)); // Output: 1
System.out.println("1 XOR 0: " + (1 ^ 0)); // Output: 1
System.out.print("1 XOR 1: " + (1 ^ 1)); // Output: 0
}
}
Para executar o código, salve-o no arquivo ~/project/XOR.java e execute os seguintes comandos no terminal:
cd ~/project/
javac XOR.java
java XOR
Usando XOR com Valores Booleanos
XOR também pode funcionar com valores booleanos. Vamos recriar a tabela usando verdadeiro (true) e falso (false) booleanos.
public class XOR {
public static void main(String[] args) {
System.out.println("False XOR False: " + (false ^ false)); // Output: false
System.out.println("False XOR True: " + (false ^ true)); // Output: true
System.out.println("True XOR False: " + (true ^ false)); // Output: true
System.out.print("True XOR True: " + (true ^ true)); // Output: false
}
}
Para executar o código, salve-o no arquivo ~/project/XOR.java e execute os seguintes comandos no terminal:
cd ~/project/
javac XOR.java
java XOR
Usando XOR com Valores Inteiros
O operador XOR pode ser usado em inteiros que não são 0 ou 1. O operador XOR funcionará nos bits individuais do equivalente binário do inteiro.
public class XOR {
public static void main(String[] args) {
System.out.println("9 XOR 15: " + (9 ^ 15)); // Output: 6
System.out.println("1 XOR 20: " + (1 ^ 20)); // Output: 21
System.out.println("7 XOR 7: " + (7 ^ 7)); // Output: 0
System.out.print("32 XOR 0: " + (32 ^ 0)); // Output: 32
}
}
Para executar o código, salve-o no arquivo ~/project/XOR.java e execute os seguintes comandos no terminal:
cd ~/project/
javac XOR.java
java XOR
Encontrando o Inteiro Não Repetido usando XOR
O operador XOR também pode ser usado para encontrar o inteiro não repetido em um array de inteiros.
public class XOR {
public static int nonRepeatingInteger(int[] numArray) {
int xor = numArray[0];
for (int i = 1; i < numArray.length; i++)
xor = xor ^ numArray[i];
return xor;
}
public static void main(String[] args) {
int[] arr = {10, 12, 5, 6, 10, 6, 12};
int nonRepeatingNum = nonRepeatingInteger(arr);
System.out.print("The non-repeating integer is: " + nonRepeatingNum);
}
}
Para executar o código, salve-o no arquivo ~/project/XOR.java e execute os seguintes comandos no terminal:
cd ~/project/
javac XOR.java
java XOR
A saída será:
The non-repeating integer is: 5
Encontrando XOR de Strings Binárias
XOR funciona apenas para tipos de dados primitivos. No entanto, podemos escrever nosso próprio método que usa o operador XOR e alguma lógica adicional para encontrar o XOR de duas strings binárias.
public class XOR {
public static String binaryStringXOR(String binStr1, String binStr2) {
String xor = "";
// adding zeroes to make the two strings equal in length
if (binStr1.length() > binStr2.length()) {
String temp = "";
for (int i = 0; i < binStr1.length() - binStr2.length(); i++)
temp += "0";
binStr2 = temp + binStr2;
} else if (binStr2.length() > binStr1.length()) {
String temp = "";
for (int i = 0; i < binStr2.length() - binStr1.length(); i++)
temp += "0";
binStr1 = temp + binStr1;
}
for (int i = 0; i < binStr1.length(); i++) {
xor += binStr1.charAt(i) ^ binStr2.charAt(i);
}
return xor;
}
public static void main(String[] args) {
System.out.println("1001 XOR 1111: " + binaryStringXOR("1001", "1111"));
System.out.println("1 XOR 10100: " + binaryStringXOR("1", "10100"));
System.out.println("0111 XOR 1: " + binaryStringXOR("0111", "1"));
System.out.print("100000 XOR 0: " + binaryStringXOR("100000", "0"));
}
}
Para executar o código, salve-o no arquivo ~/project/XOR.java e execute os seguintes comandos no terminal:
cd ~/project/
javac XOR.java
java XOR
A saída será:
1001 XOR 1111: 0110
1 XOR 10100: 10101
0111 XOR 1: 0110
100000 XOR 0: 100000
Resumo
Neste laboratório, aprendemos sobre os conceitos básicos da operação XOR em Java. Demonstramos como os operadores XOR podem ser usados em tipos de dados booleanos e inteiros. Também implementamos um método para encontrar o XOR de duas strings binárias e um método para encontrar o inteiro não repetido em um array de inteiros.



