The point of using shifts rather than multiplies is that they are faster than multiplies. Only problem is you can only use them to multiply by a base 2 number, iirc.
On x86 at least, a multiply is supposed to be a loop of addition. So it could use alot of cycles. While shifting is just shoving a few bits around.