このコードを見てください:
byte a = -124;
System.out.println(a);
System.out.println((a & 0xFF));
以下を出力します。
-124
132
それは私にとって非常に驚くべきことです。結局、には 8 ビットしか含まれていないため、 (つまり) の後でbyte変更しないでください。and0xFF11111111
考えられる理由の 1 つは、Java がビット単位の操作を行う前に変換byteすることです。intそうですか?もしそうなら、なぜですか?