1. ホーム
  2. java

[解決済み] Javaでシフト演算子はどのように動作するのですか?[重複しています]。

2022-04-28 22:11:18

質問

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

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    

誰か説明してください。

どのように解決するのですか?

System.out.println(Integer.toBinaryString(2 << 11)); 

バイナリ2シフト( 10 )を左に11倍したものです。したがって 1000000000000

System.out.println(Integer.toBinaryString(2 << 22)); 

バイナリ2シフト( 10 )を左に22倍したものです。したがって. 100000000000000000000000

System.out.println(Integer.toBinaryString(2 << 33)); 

さて、intは4バイト、つまり32ビットです。したがって、33シフトするときは、1シフトするのと同じです。 100