# XOR operator

## What is XOR operator?

The XOR operator (^) is a bitwise operator that performs the exclusive OR operation on its operands.

The exclusive OR operation is a logical operation that returns true (1) if exactly one of its operands is 1. It return false (0) if both operands are 0 or both operands are 1.

### XOR operator example

0 ^ 0 = 1

### XOR operator truth table

`x` | `y` | `x ^ y` |
---|---|---|

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 0 |

## Useful properties XOR operator:

#### argument XOR 0 = argument

x ^ 0 = x

#### argument XOR argument = 0

x ^ x = 0

#### Commutativity

x ^ y = y ^ x

## Programming problem related XOR operator:

In-Place Swapping: Swap two values x and y in-place, i.e. without using any helper variables.

let x = 10, y = 5; // 'x' binary (1010) and 'y' binary (0101) x = x ^ y; // x now becomes 15 (1111) y = x ^ y; // y becomes 10 (1010) x = x ^ y; // x becomes 5 (0101)

Finding the Missing Number: You are given an array A of n – 1 integers which are in the range between 1 and n. All numbers appear exactly once, except one number, which is missing. Find this missing number.

Finding the Duplicate Number: You are given an array A of n + 1 integers which are in the range between 1 and n. All numbers appear exactly once, except one number, which is duplicated. Find this duplicated number.

Finding Two Missing/Duplicate Numbers: You are given an array A of n – 2 integers which are in the range between 1 and n. All numbers appear exactly once, except two numbers, which are missing. Find these two missing numbers.

Reference: