Use of caret symbol( ^ ) in Ruby

shajin picture shajin · Aug 23, 2011 · Viewed 7.1k times · Source
1 ^ 1
# => 0

1 ^ 2
# => 3

5 ^ 6
# => 3

These are the results I am getting. Can, please, somebody explain how ^ works?

Answer

Rafe Kettler picture Rafe Kettler · Aug 23, 2011

It's a bitwise XOR operator.

For each bit in the binary representation of the operands, a bitwise XOR will get a 1 bit if one of the corresponding bits in the operands is 1, but not both, otherwise the XOR will get a 0 bit. Here's an example:

5     = 101
6     = 110
5 ^ 6 = 011 = 3