From the C Standard (6.5.7 Bitwise shift operators)
4 The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated
  bits are filled with zeros. If E1 has an unsigned type, the value of
  the result is E1 × 2E2, reduced modulo one more than the maximum value
  representable in the result type. If E1 has a signed type and
  nonnegative value, and E1 × 2E2 is representable in the result type,
  then that is the resulting value; otherwise, the behavior is
  undefined.
5 The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1
  has an unsigned type  or if E1 has a signed type and a nonnegative
  value, the value of the result is the integral part of the quotient of
  E1 / 2E2. If E1 has a signed type and a negative value, the resulting
  value is implementation-defined.
In fact this operation
money << 2
is equivalent to
4 * money