Skip to main content

XOR Operator

Bitwise XOR, Computations, and Examples

2 min read

Introduction

A Bitwise XOR is a binary operation that takes two-bit patterns of equal length and performs the logical exclusive OR operation on each corresponding bits pair. Each position’s result is 0 if both bits are 0 or if both bits are 1. Otherwise, the result is 1.

Bitwise XOR

The Bitwise XOR operator does the following:

  • It is a binary operator that takes two numbers.
  • When we do Bitwise ^ of these two numbers, it considers the binary representation of these two numbers.
  • Bitwise XOR compares bit by bit in binary representation, and whatever binary representation you get, the corresponding Integer is returned as an output.

The integer data type takes 4 bytes in C, C++, and Java programming languages.

4 Bytes = 4 * (8 bits) = 32 bits. {1 Byte = 8 bits}

For simplicity, we’ll represent these in 16-bit instead of 32-bit binary.

a = 12
b = 10
---------------------------------
a in binary : 0000 0000 0000 1100
b in binary : 0000 0000 0000 1010
---------------------------------
a ^ b       : 0000 0000 0000 0110
---------------------------------

The ^ operation happens from the rightmost bit traversing towards the leftmost bit in the 32-bit binary representation.

Illustration

Let’s visualize the steps below:

Step #1:

a = 12
b = 10
---------------------------------
a in binary : 0000 0000 0000 1100
b in binary : 0000 0000 0000 1010
---------------------------------
a ^ b       :                   0
---------------------------------

Step #2:

a = 12
b = 10
---------------------------------
a in binary : 0000 0000 0000 1100
b in binary : 0000 0000 0000 1010
---------------------------------
a ^ b       :                  10
---------------------------------

Step #3:

a = 12
b = 10
---------------------------------
a in binary : 0000 0000 0000 1100
b in binary : 0000 0000 0000 1010
---------------------------------
a ^ b       :                 110
---------------------------------

Step #4:

a = 12
b = 10
---------------------------------
a in binary : 0000 0000 0000 1100
b in binary : 0000 0000 0000 1010
---------------------------------
a ^ b       : 0000 0000 0000 0110
---------------------------------

Code

Below is the code representation of the ^ operator.

Java

class XOROperation {
    public static void main( String args[] ) {
        int x = 12;
        int y = 10;
        System.out.println("Bitwise XOR of (x , y) is : " + (x ^ y)); // yields to 6
    }
}

Python

x=12
y=10
print("Bitwise XOR of (x,y) is : ",(x^y))

JavaScript

const XOROperation = (x, y) => x ^ y;

const x = 12;
const y = 10;

console.log (`Bitwise XOR of (x , y) is : ${XOROperation (x, y)}`);

C++

#include <iostream>

using namespace std;

int main() {
    int x = 12, y = 10;
    cout << "Bitwise XOR of (x,y) is : " << (x ^ y);
    return 0;
}

TypeScript

const XOROperation = (x: number, y: number): number => x ^ y;

const x: number = 12;
const y: number = 10;

console.log(`Bitwise XOR of (x , y) is : ${XOROperation(x, y)}`);

In the following lessons, we will apply the Bitwise approach to solve a few problems with XOR.

Let’s jump into our first problem using the Bitwise ^ operator in the next lesson.

Reading Progress