在Java中,我创建了一个只包含'on'位的字节,所以:
byte a = (byte) 0xff;
System.out.println(a);
然而,当打印时,我得到结果-1而不是255(= 15 * 16 + 15)。我知道整数中的第一位是符号,但整数是32位,而这个字节只有8位。
如果我使用以下代码,则会给出预期结果:
byte a = (byte) 0xff;
System.out.println(a & 0xff);
这真让我感到惊讶!一个字节的按位和操作如何突然返回不同的结果?任何人都可以解释这种影响吗?