Those zeros were added for illustrative purposes. We could have just as well said:
Code:
/* ... */
10100111100 (original)
101001111000 (shifted left once)
1010011110000 (shifted left again)
I showed those zeros to you because, in your original post, it seems were you trying to preserve the number of bits in the original value. The idea is that there are other bit places beyond the currently set "most significant bit". We just don't see them because they're irrelevant - they have no value, so we could just think of them as zero (empty place holders).
This is what you implied in your original post:
1340 = 10100111100 and applying <<2 = 10011110000 (right?)
Code:
/* wrong! */
10100111100 (original)
01001111000 (shifted left once)
10011110000 (shifted left again)
Notice how in your original statement, the starting 1 and 0 get lost during shifting. It seems like you were trying to preserve the number of bits, and in doing so were getting the wrong result.