Simple question about signed integer multiplication If you have a signed integer int x = any
And then state that x &lt; 0
Is the following statement true or false?
((x*2) &lt; 0)

The answer is false, which seems counter intuitive. Is it because X can be any negative value, it can also be a very big negative value which will overflow if multiplied by two.
So if I have the number -30768 1000011111010000
which multiplied by 2 is -61536 11111111111111110000111110100000
But because we only have 16 bits the last 16 are taken resulting in 0000111110100000 which is positive.
Is this the correct explanation? I can't seem to find a good source
Your answer is nearly right.
So x is an unsigned negative value of k bits. The smalles possible value of x is representet by the 2's Complement number 1000....0. If you multiply this number by 2 (or logical shifting it by 1, which is equivalent) you end up with the number 0000...0 which is 0. And therefore (x*2)&lt;0 is false.