ちなみにMIDORIMUSIさんの実験で1<<99の結果が0になっているのは、シフト演算が単純な掛け算じゃなくてビットの移動のため自動的に整数型に変換されて、整数型のビット長(32ビット)を超えた分が捨てられて0になってるんですね。 試しに?1<<31と打ち込んで実行すると、整数型の符号ビットが立ってマイナスの数値が返ってきますよ。