tags:

views:

159

answers:

2

What is the caret (^) doing in the following SQL Server query?

SELECT 1^2,  1^3;

which gives the results:

3   2

I came across this before I found the SQUARE() function.

+13  A: 

The carret is a bitwise exclusive or:

decimal 1 = binary 001                     decimal 1 = binary 001
XOR                                        XOR
decimal 2 = binary 010                     decimal 3 = binary 011
=                                          =
decimal 3 = binary 011                     decimal 2 = binary 010

More info on the MSDN page for bitwise operations.

Andomar
+4  A: 
   3^2
   =
   000011  (3)
   xor
   000010  (2)
   =  
   000001  (1)
   =
   1
Denis Valeev
I think your plus sign is misleading - this isn't do adding, this is XORing the numbers. Your setup works for the first example of 1^2 but would fail on the second example of 1^3
Dave McClelland
@Dave McClelland Thanks for the comment, I was thinking likewise.
Denis Valeev
@Denis I must have ninja posted between your first post and your revision. Looks good now :)
Dave McClelland