シフト演算って

あんまり使わない(というか仕事で使ったことねー)けど、意外に知らなかったことがあった。
0から31の範囲外の値を指定すると、勝手に最下位5ビットを使ってシフトするよーになってるらしい。
つまりは、シフトしすぎて0になる、なんてことはないらしい。


というわけで、どーでもいいコード。


int num = 10;
// すべて5
System.out.println(num >> 1);
System.out.println(num >> 33);
System.out.println(num >> 321);

// すべて20
System.out.println(num << 1);
System.out.println(num << 33);
System.out.println(num << 321);