43

I've been learning Python but I'm a little confused. Online instructors tell me to use the operator ** as opposed to ^ when I'm trying to raise to a certain number. Example:

print 8^3

Gives an output of 11. But what I'm look for (I'm told) is more akin to: print 8**3 which gives the correct answer of 512. But why?

Can someone explain this to me? Why is it that 8^3 does not equal 512 as it is the correct answer? In what instance would 11 (the result of 8^3)?

I did try to search SO but I'm only seeing information concerning getting a modulus when dividing.

Interrupt
  • 965
  • 3
  • 9
  • 16
  • 3
    ^ is XOR operator, ** is power. Search for XOR (google or stackoverflow) to know what it means. – nhahtdh Aug 20 '12 at 19:33
  • Wow, thank you so much. I thought I was doing something wrong (and in essence I suppose I did for assuming ^ was for powers in Python. Thank you for the clarification. – Interrupt Aug 20 '12 at 19:36
  • @user1527653 -- don't forget to accept an answer (click the little checkmark next to an answer). That helps others who have the same problem you did by letting them know immediately which of the posted solutions was most useful to you. – mgilson Aug 20 '12 at 19:44

3 Answers3

83

Operator ^ is a bitwise operator, which does bitwise exclusive or.

The power operator is **, like 8**3 which equals to 512.

wjandrea
  • 28,235
  • 9
  • 60
  • 81
behnam
  • 1,959
  • 14
  • 21
16

The symbols represent different operators.

The ^ represents the bitwise exclusive or (XOR).

Each bit of the output is the same as the corresponding bit in x if that bit in y is 0, and it's the complement of the bit in x if that bit in y is 1.

** represents the power operator. That's just the way that the language is structured.

Rostyslav Dzinko
  • 39,424
  • 5
  • 49
  • 62
Sam Dolan
  • 31,966
  • 10
  • 88
  • 84
  • It might also be worthwhile to point out that `8.^3` raises an exception since bitwise operations only work with integers – mgilson Aug 20 '12 at 19:35
  • Wow, I've never had to work with bitwise operators before (after all I'm just learning the language), so interesting! Thank you – Interrupt Aug 20 '12 at 21:40
0

It's just that ^ does not mean "exponent" in Python. It means "bitwise XOR". See the documentation.

BrenBarn
  • 242,874
  • 37
  • 412
  • 384