私はそれを正しく理解していないというこの小さな論理に固執しています
int
は 32 ビットなので、20 をバイナリで取ると次のようになるとします。
// 00000000000000000000000000010100
..今、右シフト操作を実行すると、4と言います
int a = 20>>4;
// 00000000000000000000000000000001
..だから結果は1
ここで、再び 20 を取り、5 つの右シフト演算を行うとします。
int b = 20>>5; //00000000000000000000000000000000
..だから結果は0
ここで 32 右シフトを行うと、割り当てた番号と同じ番号が返されるのはなぜですか??
int c = 20>>32; //how does this prints 20 again??
System.out.println("right shift 4= "+a+"\n right shift 5= "+b+"right shift 32 = "+c);
だから私が期待していたのは、5シフト後です..任意の数のシフトで結果が0になるはずですが、32シフトで割り当てられた値が返されるのはなぜですか?