Introducción
El operador XOR es un operador bit a bit utilizado en Java para comparar bits individuales de los operandos. En Java, el operador XOR está representado por el símbolo de circunflejo (^). Se utiliza para comparar dos bits y devuelve true si y solo si los dos bits que se están comparando no son iguales.
Usando XOR con Tipos de Datos Primitivos
En Java, el operador XOR se puede utilizar con cualquier tipo de dato primitivo. Vamos a verificar la tabla de verdad del XOR utilizando tipos de datos primitivos.
public class XOR {
public static void main(String[] args) {
System.out.println("0 XOR 0: " + (0 ^ 0)); // Salida: 0
System.out.println("0 XOR 1: " + (0 ^ 1)); // Salida: 1
System.out.println("1 XOR 0: " + (1 ^ 0)); // Salida: 1
System.out.print("1 XOR 1: " + (1 ^ 1)); // Salida: 0
}
}
Para ejecutar el código, guárdelo en el archivo ~/proyecto/XOR.java, y ejecute los siguientes comandos en la terminal:
cd ~/proyecto/
javac XOR.java
java XOR
Usando XOR con Valores Booleanos
El XOR también puede trabajar con valores booleanos. Vamos a recrear la tabla utilizando booleanos true y false.
public class XOR {
public static void main(String[] args) {
System.out.println("False XOR False: " + (false ^ false)); // Salida: false
System.out.println("False XOR True: " + (false ^ true)); // Salida: true
System.out.println("True XOR False: " + (true ^ false)); // Salida: true
System.out.print("True XOR True: " + (true ^ true)); // Salida: false
}
}
Para ejecutar el código, guárdelo en el archivo ~/proyecto/XOR.java, y ejecute los siguientes comandos en la terminal:
cd ~/proyecto/
javac XOR.java
java XOR
Usando XOR con Valores Enteros
El operador XOR se puede utilizar en enteros que no son 0 o 1. El operador XOR trabajará en los bits individuales del equivalente binario del entero.
public class XOR {
public static void main(String[] args) {
System.out.println("9 XOR 15: " + (9 ^ 15)); // Salida: 6
System.out.println("1 XOR 20: " + (1 ^ 20)); // Salida: 21
System.out.println("7 XOR 7: " + (7 ^ 7)); // Salida: 0
System.out.print("32 XOR 0: " + (32 ^ 0)); // Salida: 32
}
}
Para ejecutar el código, guárdelo en el archivo ~/proyecto/XOR.java, y ejecute los siguientes comandos en la terminal:
cd ~/proyecto/
javac XOR.java
java XOR
Encontrando el Entero No Repetido usando XOR
El operador XOR también se puede utilizar para encontrar el entero no repetido en una matriz de enteros.
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("El entero no repetido es: " + nonRepeatingNum);
}
}
Para ejecutar el código, guárdelo en el archivo ~/proyecto/XOR.java, y ejecute los siguientes comandos en la terminal:
cd ~/proyecto/
javac XOR.java
java XOR
La salida será:
El entero no repetido es: 5
Encontrando la Operación XOR de Cadenas Binarias
El XOR solo funciona para tipos de datos primitivos. Sin embargo, podemos escribir nuestro propio método que use el operador XOR y algo de lógica adicional para encontrar el XOR de dos cadenas binarias.
public class XOR {
public static String binaryStringXOR(String binStr1, String binStr2) {
String xor = "";
// agregando ceros para que las dos cadenas tengan la misma longitud
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 ejecutar el código, guárdelo en el archivo ~/proyecto/XOR.java, y ejecute los siguientes comandos en la terminal:
cd ~/proyecto/
javac XOR.java
java XOR
La salida será:
1001 XOR 1111: 0110
1 XOR 10100: 10101
0111 XOR 1: 0110
100000 XOR 0: 100000
Resumen
En este laboratorio, aprendimos sobre los conceptos básicos de la operación XOR en Java. Hemos demostrado cómo se pueden utilizar los operadores XOR en los tipos de datos booleanos y enteros. También hemos implementado un método para encontrar el XOR de dos cadenas binarias y un método para encontrar el entero no repetido en una matriz de enteros.



