Bitwise XOR Operator in Programming - GeeksforGeeks (2024)

Last Updated : 27 Feb, 2024

Improve

Bitwise XOR Operator is represented by the caret symbol (^). It is used to perform a bitwise XOR operation on the individual bits of two operands. The XOR operator returns 1 if the corresponding bits in the two operands are different, and 0 if they are the same.

Table of Content

  • What is Bitwise XOR?
  • Bitwise XOR operator:
  • Bitwise XOR operator in C:
  • Bitwise XOR operator in C++:
  • Bitwise XOR operator in Java:
  • Bitwise XOR operator in Python:
  • Bitwise XOR operator in C#:
  • Bitwise XOR operator in Javascript:
  • Use Cases of Bitwise XOR Operator:
  • Applications of Bitwise XOR Operator in Programming:

What is Bitwise XOR?

Bitwise XOR (exclusive OR) is a binary operation that takes two equal-length binary representations and performs the logical XOR operation on each pair of corresponding bits. The result in each position is 1 if only one of the two bits is 1 but will be 0 if both are 0 or both are 1.

The truth table for the XOR (exclusive OR) operation is as follows:

ABA XOR B
000
011
101
110

In this table, A and B are the variables, and A XOR B is the expression representing the logical XOR operation. The table shows all possible combinations of truth values for A and B, and the resulting truth value of A XOR B for each combination.

The XOR operation returns 1 (true) if the inputs are different, and 0 (false) if they are the same. This is why the output is 1 for the second and third rows, where A and B have different values, and 0 for the first and fourth rows, where A and B have the same value.

Bitwise XOR operator:

The bitwise XOR operator is represented by the caret symbol (^) in many programming languages, including Python, C, C++, and Java.

result = operand1 ^ operand2;

Bitwise XOR operator in C:

C

#include <stdio.h>

int main()

{

int a = 10; // 1010 in binary

int b = 6; // 0110 in binary

int result = a ^ b; // 1100 in binary

printf("%d\n", result); // Output: 12

return 0;

}

Output

12

Bitwise XOR operator in C++:

C++

#include <iostream>

using namespace std;

int main()

{

int a = 10; // 1010 in binary

int b = 6; // 0110 in binary

int result = a ^ b; // 1100 in binary

cout << result << endl; // Output: 12

return 0;

}

Output

12

Bitwise XOR operator in Java:

Java

import java.io.*;

class GFG {

public static void main(String[] args)

{

int a = 10; // 1010 in binary

int b = 6; // 0110 in binary

int result = a ^ b; // 1100 in binary

System.out.println(result); // Output: 12

}

}

Output

12

Bitwise XOR operator in Python:

Python3

a = 10 # 1010 in binary

b = 6 # 0110 in binary

result = a ^ b # 1100 in binary

print(result) # Output: 12

Output

12

Bitwise XOR operator in C#:

C#

using System;

class MainClass {

public static void Main(string[] args)

{

int a = 10; // 1010 in binary

int b = 6; // 0110 in binary

int result = a ^ b; // 1100 in binary

Console.WriteLine(result); // Output: 12

}

}

Output

12

Bitwise XOR operator in Javascript:

Javascript

let a = 10; // 1010 in binary

let b = 6; // 0110 in binary

let result = a ^ b; // 1100 in binary

console.log(result); // Output: 12

Output

12

Use Cases of Bitwise XOR Operator:

The bitwise XOR operator (^) has several use cases in programming:

  • Flipping individual bits: The XOR operator can be used to flip individual bits in a number. For example, x ^ 1 will flip the least significant bit of x.
  • Swapping two variables without a temporary variable: The XOR operator can be used to swap the values of two variables without using a temporary variable. For example, a ^= b; b ^= a; a ^= b; will swap the values of a and b.
  • Checking if two numbers have opposite signs: The XOR operator can be used to check if two numbers have opposite signs. For example, (x ^ y) < 0 will return true if x and y have opposite signs.
  • Implementing simple encryption algorithms: The XOR operator can be used to implement simple encryption algorithms. For example, x ^ key will encrypt x using key, and x ^ key ^ key will decrypt x using key.
  • Detecting changes in data: The XOR operator can be used to detect changes in data. For example, x ^ y will return 0 if x and y are the same, and a non-zero value if they are different.

Applications of Bitwise XOR Operator:

Here are some applications of the bitwise XOR operator:

  • Error detection and correction: XOR operations are used in error detection and correction codes like CRC (Cyclic Redundancy Check) and Hamming codes. By XORing the data with a known pattern, errors in transmission can be detected and corrected.
  • Random number generation: XOR operations can be used in pseudo-random number generation algorithms. By XORing a number with itself and a shifting pattern, a sequence of seemingly random numbers can be generated.
  • Parity checking: XOR operations are used in parity checking to determine if the number of bits set to 1 in a binary word is odd or even. This is often used in computer memory systems to detect errors.
  • Image processing: XOR operations can be used in image processing to perform operations like image blending, edge detection, and watermarking.
  • Digital signal processing: XOR operations are used in digital signal processing algorithms like Fast Fourier Transform (FFT) and convolution to perform operations on digital signals.
  • Cryptographic hash functions: XOR operations are used in cryptographic hash functions like MD5 and SHA-1 to create a unique hash value for a given input.
  • Network protocols: XOR operations are used in network protocols like TCP and UDP to calculate checksums for data packets to ensure data integrity during transmission.


S

srinam

Improve

Next Article

Bitwise OR Operator (|) in Programming

Please Login to comment...

Bitwise XOR Operator in Programming - GeeksforGeeks (2024)
Top Articles
Latest Posts
Article information

Author: Velia Krajcik

Last Updated:

Views: 5772

Rating: 4.3 / 5 (74 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Velia Krajcik

Birthday: 1996-07-27

Address: 520 Balistreri Mount, South Armand, OR 60528

Phone: +466880739437

Job: Future Retail Associate

Hobby: Polo, Scouting, Worldbuilding, Cosplaying, Photography, Rowing, Nordic skating

Introduction: My name is Velia Krajcik, I am a handsome, clean, lucky, gleaming, magnificent, proud, glorious person who loves writing and wants to share my knowledge and understanding with you.