
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Importance of XOR operator in Java?
Bitwise XOR (exclusive or) "^" is an operator in Java that provides the answer '1' if both of the bits in its operands are different; if both of the bits are the same, then the XOR operator gives the result '0'. XOR is a binary operator that is evaluated from left to right. The operator "^" is undefined for the argument of type String.
Importance of the XOR (^) Operator in Java
In Java, the XOR (^) operator is important for both bitwise and boolean operations. It returns true or 1 only when the two operands "differ". XOR is commonly used for comparing bits, toggling values, and swapping variables without a temporary variable.
The following table shows how the XOR (^) operator works when applied to two binary digits:
Input 1 | Input 2 | Output |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
The above table helps understand the result when performing the XOR operation between two operands.
Example 1
The following example demonstrates the XOR (^) operator with Boolean values. XOR returns true only when the inputs differ. The program tests all combinations of true and false:
public class XORTest1 { public static void main(String[] args) { boolean x = false; boolean y = false; boolean xXorY = x ^ y; System.out.println("false XOR false: "+xXorY); x = false; y = true; xXorY = x ^ y; System.out.println("false XOR true: "+xXorY); x = true; y = false; xXorY = x ^ y; System.out.println("true XOR false: "+xXorY); x = true; y = true; xXorY = x ^ y; System.out.println("true XOR true: "+xXorY); } }
The above program displays true or false based on whether the input combinations are different or the same.
false XOR false: false false XOR true: true true XOR false: true true XOR true: false
Example 2
The following is another example of showing the importance of the XOR (^) operator. It performs the "XOR" operation on each character of str1 and str2 and appends the result (0 or 1) to a StringBuffer:
public class XORTest2 { public static void main(String[] args) { String str1 = "1010100101"; String str2 = "1110000101"; System.out.println("The str1 is: " + str1); System.out.println("The str2 is: " + str2); StringBuffer sb = new StringBuffer(); for (int i = 0; i < str1.length(); i++) { sb.append(str1.charAt(i)^str2.charAt(i)); } System.out.println("The final result is: " + sb); } }
Output
The above program produces the following output ?
The str1 is: 1010100101 The str2 is: 1110000101 The final result is: 0100100000
Example 3
In the example below, we use the XOR (^) operator to swap two numbers without using a third variable. The XOR operator performs its operation on both variables and swaps their values:
public class Demo { public static void main(String[] args) { int a = 5; int b = 7; System.out.println("Before swapping: a = " + a + ", b = " + b); // Swap using XOR a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("After swapping: a = " + a + ", b = " + b); } }
Output
The above program swapped the values of two numbers and displayed both the original values and the values after swapping:
Before swapping: a = 5, b = 7 After swapping: a = 7, b = 5
Example 4
The following example shows the best usage of the XOR (^) operator in Java. We use this operator to find a unique element from the given array {2, 3, 5, 4, 5, 3, 4}:
public class Demo { public static void main(String[] args) { int[] arr = {2, 3, 5, 4, 5, 3, 4}; System.out.print("The given array is: "); for(int i = 0; i<arr.length; i++){ System.out.print(arr[i] + " "); } int unique = 0; for (int num : arr) { unique ^= num; } System.out.println("\nThe unique element is: " + unique); } }
Output
The above program displays the unique element in an array:
The given array is: 2 3 5 4 5 3 4 The unique element is: 2