>>874
> ps <= ps <<1;
> こんな書き方では最下位ビットはどうなるのかわからん。

シフトした残りには0が入るって決められてるから、
分からん訳じゃ無いと思うけど。