32回左シフトを指示した場合のシフト演算結果とコンパイラが計算して展開した値が違うみたい。
値はコンパイラの値が正しいけど、i386では以下の理由で32回シフト = シフトしないのと同じになる。
ttp://pdos.csail.mit.edu/6.828/2005/readings/i386/SAL.htm To reduce the maximum execution time, the 80386 does not allow shift counts greater than 31.
If a shift count greater than 31 is attempted, only the bottom five bits of the shift count are used.
プログラムでシフト回数がレジスタ幅以上にならないようにチェックしたほうがよさそう。
(PowerPCのgccは b=32のときの ~0 << bの値が期待通り 0 になる)