Ruby Tutorial Ruby References

Ruby - Bitwise XOR operator



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 operator (^) is given below:

x = 50
y = 25

#Bitwise XOR operation
z = x ^ y

#Displaying the result
puts "z = #{z}"

The output of the above code will be:

z = 43

Example: Swap two numbers without using temporary variable

The bitwise XOR 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 = x ^ y
  y = x ^ 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