convertXXXToInt1()每对中的第一个方法()是带符号的,第二个(
convertXXXToInt2())是无符号的。
但是,Java
int始终是带符号的,因此,如果设置的最高位,
b4则
convertFourBytesToInt2()即使将其视为“无符号”版本,其结果也将为负。
假设
byte值
b2是-1或十六进制的0xFF。所述
<<操作者将导致其被“提升”到一个
int为-1,或0xFFFFFFFF值类型。移位8位后,将为0xFFFFFF00,移位24个字节后,将为0xFF000000。
但是,如果应用按位运算
&符,则高阶位将设置为零。这将丢弃标志信息。这是这两种情况的第一步,将详细介绍。
签:
byte b2 = -1; // 0xFFint i2 = b2; // 0xFFFFFFFFint n = i2 << 8; // 0x0xFFFFFF00
未签名:
byte b2 = -1; // 0xFFint i2 = b2 & 0xFF; // 0x000000FFint n = i2 << 8; // 0x0000FF00



