If it helps, you can imagine an analogous system of fixed-point decimals.
Let's say that we have made our "unit" 1/1000. So the smallest representable amount is 0.001, which we can call, "1". So to represent 2, we would multiply the integer part by 10^3: "2,000". To represent 3.5, we multiply the integer part by 10^3, and then add the fraction part, which is the solution to the equation \$ 0.5 = {x\over 1000} \$; which gives us "3,500".
Straight multiplying "2,000" by "3,500" will give us a product with as many digits as both multiplicands have together. So the result would be "7,000,000", which we know is incorrect: it should be "7,000". We ended up with six fraction digits, when what we needed was just three (because the unit is 1/1000). So we need to "decimal shift" right by three digits to fix that.
In binary fixed point, the same is true. If we pick a unit of 1/1024 or \$ 2^{-10} \$, then we have ten binary fraction digits in each variable. The smallest representable amount is 1/1024, which we call "1". To represent 2, we multiply the integer part by 2^10, or just shift left by 10 bits:
2<<10 == 2048To represent 3.5, we multiply the integer part by 2^10, or just shift left by 10 bits; and add the fraction part, which is the solution to the equation \$ 0.5 = {x\over 1024} \$; which gives us
(3<<10) + 512 == 3584Straight multiplying "2048" by "3584" would give us "7340032", which we know is wrong, because the result should fit in 13 bits, but it takes 23. We need to binary shift right by 10 bits to fix it: "7168", which is equal to 7 * 2^10.