And why are you shifting bits instead of setting/getting a bit in a Long?

When using Shift have a look at these implementations, they don't overflow:
http://www.xbeat.net/vbspeed/c_ShiftLeft.htm
http://www.xbeat.net/vbspeed/c_ShiftRight.htm