Ruby - Bitwise XOR and assignment operator
The Bitwise XOR and assignment operator (^=) assigns the first operand a value equal to the result of Bitwise XOR operation of two operands.
(x ^= y) is equivalent to (x = x ^ y)
The Bitwise XOR operator (^) is a binary operator which takes two bit patterns of equal length and performs the logical exclusive OR operation on each pair of corresponding bits. It returns 1 if only one of the bits is 1, else returns 0.
Bit_1 | Bit_2 | Bit_1 ^ Bit_2 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
The example below describes how bitwise XOR operator works:
50 ^ 25 returns 43 50 -> 110010 (In Binary) ^ 25 -> ^ 011001 (In Binary) ---- -------- 43 <- 101011 (In Binary)
The code of using Bitwise XOR and assignment operator (^=) is given below:
x = 50 y = 25 #Bitwise XOR and assignment operation x ^= y #Displaying the result puts "x = #{x}"
The output of the above code will be:
x = 43
Example: Swap two numbers without using temporary variable
The bitwise XOR and assignment operator can be used to swap the value of two variables. Consider the example below.
def swap(x, y) puts "Before Swap:" puts "x = #{x}" puts "y = #{y}" #Swap technique x ^= y y ^= x x ^= y puts "\nAfter Swap:" puts "x = #{x}" puts "y = #{y}" end swap(10, 25)
The above code will give the following output:
Before Swap: x = 10 y = 25 After Swap: x = 25 y = 10
❮ Ruby - Operators