What Is ^ Used for in Ruby? [Duplicate]

Possible Duplicate:
Use of caret symbol( ^ ) in Ruby

So I was playing around with some code and I tried to play around with the power operator. So I thought that perhaps I could use the caret (^) for this purpose, but after using it in:

for i in 0..10
  puts "#{i}   #{1^i}\n"
end

I got some really funky results

0   -  1
1   -  0
2   -  3
3   -  2
4   -  5
5   -  4
6   -  7
7   -  6
8   -  9
9   -  8
10  -  11

The only pattern I see is -1 on an odd number and +1 on an even number, but then when I try:

for i in 0..10
  puts "#{i}   #{2^i}\n"
end

i get:

0   -  2
1   -  3
2   -  0
3   -  1
4   -  6
5   -  7
6   -  4
7   -  5
8   -  10
9   -  11
10  -  8

wth! So then I kept going up to 4^i and plotted them, the 1^i & 3^i came out with decent patterns but 2^i & 4^i were just all over the place with no visible patterns (though highly unlikely) with just 11 plotting points, so I've come to you ladies and gents asking you:

What on earth is ^ used for?!

3

In most programming languages, ^ is the XOR operator (Exclusive Or in Wikipedia). XOR is one of the most essential operations in the CPU, it often employed to zero registers (think of a ^= a) because it is fast and has a short opcode.

For the power function, you have to use e.g. ** (e.g. in ruby), java.lang.Math.pow, math.pow, pow etc.

In fact, I couldn't name a programming language that uses ^. It is used in LaTeX for formatting (as superscript, not power function, technically). But the two variants I see all the time are ** (as the power function is directly related to multiplication) and pow(base, exp).

Note that you can compute integer powers of 2 faster using shifts.

10
Maya Lin-Takahashi

Maya Lin-Takahashi

Consumer Tech & Gadget Reviewer

Maya is a hardware enthusiast who tests and reviews smart home devices, smartphones, wearables, and audio gear. She focuses on practical consumer value and build quality.

Share this article
Twitter Facebook Pinterest