1) a << b is equivalent to a*(2^b). I don't see why the result shoud be zero.
2) to me, the result is undefined because as far as I remember, one can not shift by a number of bit greater or equal to the number of bit of the left expression. Unsigned int is 32 bit no?
BR