Javaでビット操作をするマクロを書いていたんだけど、すげーことに気が付いた。
1<<32
これの結果、なんだと思いますか?
答えは、1です。
どうやら、シフトでintの上限を超えるとロールしてしまうらしい(;´Д`)
つまり、
1<<33
は2になるし、
1<<35
は8になった(;´Д`)
これ、DoJa3.0のエミュレータでしか試してないんだけど、JavaVMの仕様なのかな?
そうだとすれば結構ひどい仕様だと思うんだけど……。
ちなみに、きちんと32bitシフトをしたかったら、
(int)((long)1<<32)
で0になります。
微妙だなぁ……。