Search code examples
rubyoperatorscaret

Use of caret symbol (^) in Ruby


1 ^ 1
# => 0

1 ^ 2
# => 3

5 ^ 6
# => 3

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


Solution

  • 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