Ruby Tutorial Ruby References

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_1Bit_2Bit_1 ^ Bit_2
000
101
011
110

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