シフト演算子を理解しようとしていますが、あまり理解できませんでした。以下のコードを実行しようとしたとき
System.out.println(Integer.toBinaryString(2 << 11));
System.out.println(Integer.toBinaryString(2 << 22));
System.out.println(Integer.toBinaryString(2 << 33));
System.out.println(Integer.toBinaryString(2 << 44));
System.out.println(Integer.toBinaryString(2 << 55));
私は以下を取得します
1000000000000
100000000000000000000000
100
10000000000000
1000000000000000000000000
誰か説明してもらえますか?
ベストアンサー1
System.out.println(Integer.toBinaryString(2 << 11));
2進数2( 10
)を11回左にシフトします。したがって、1000000000000
System.out.println(Integer.toBinaryString(2 << 22));
2進数2( 10
)を22回左にシフトします。したがって、100000000000000000000000
System.out.println(Integer.toBinaryString(2 << 33));
int は 4 バイトなので 32 ビットです。したがって、33 シフトすると 1 シフトするのと同じになります。したがって、次のようになります。100