这是一段代码:
byte c = (byte) (0b10101010);
byte d = (byte) (c >> 1);
System.out.println(d);
结果是-85。(我知道原因是因为字节 c 在进行右移操作之前会自动扩展为 int (高 3 个字节全部组成 1))
这是另一段代码:
byte c = (byte) (0b10101010 >> 1);
System.out.println(c );
结果是 85。所以我的问题是在进行右移操作之前,为什么二进制代码(0b10101010 不会像上面的代码一样扩展到 int (ff, ff, ff, 0b10101010)?)