Java ではシフト演算子はどのように機能しますか? [重複] 質問する

Java ではシフト演算子はどのように機能しますか? [重複] 質問する

シフト演算子を理解しようとしていますが、あまり理解できませんでした。以下のコードを実行しようとしたとき

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

おすすめ記事