While waiting for an index rebuild process to complete a client of mine Comprehensive Database Performance Health Check recently asked me if I have any puzzles to discuss. Of course, I have one where you have to guess the answer for a simple select statement. Let us see if you can guess it correctly or not.
Before running the following select statement in SSMS, guess the answer.
SELECT ~ 1
Please note that right before 1 sign there is Tilde sign and not a minus sign.
Guess the Answer
Now, run the same select statement in any version of SQL Server Management Studio.
The answer is -2, now my question is that why the query above gives us an answer as -2 and not any other values. Please leave your answer in the comments section. I am very curious to know if you can find the answer to the same. I will publish answer to this puzzle sometime next week.
Technology Online
I hope you find these Learning paths helpful. If you have a Pluralsight subscription, you can watch it for free. If you do not have a Pluralsight subscription, you can still watch the course for FREE by signing up for a trial account. Please note that you do not need any credit card.
Reference: Pinal Dave (http://blog.SQLAuthority.com)
124 Comments. Leave new
it be very interesting, ~ ibitwise logical NOT for the expression, taking each bit in turn, then,
in 2 bytes and in binary is
1(decimal) = 01 (binary in 2 bytes)
then logical NOT we have
01 (binary) => – 10(binary not)
in decimal is -2
:D
0000 0001 = Binary for 1, not 1 = ~ 1 = in binary 1111 1110 , this converted to decimal = -2
Perhaps not covernted but interpreted.
You are right. to NOT each bit turns 0000 0001 into 1111 1110
Then 1111 1110 is interpreted as -2 in signed integer or 254 in unsigned integer.
This is also ASCII 254 or the black square.
https://en.wikipedia.org/wiki/Two%27s_complement
~x = -(x+1) # This is the formula of bitwise negation(~) operator