在Java中,位运算会导致类型转换为整数并且还会引起符号扩展。例如,以下情况是期望的:
我预期的是-1而不是32767。为什么在进行位运算之前,类型转换没有扩展符号?有什么想法吗?
byte b = -1;
System.out.println(b >> 1);//-1
在Java中,字符使用UTF-16编码,每个单元使用2个字节表示。
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
我预期的是-1而不是32767。为什么在进行位运算之前,类型转换没有扩展符号?有什么想法吗?
0xFFFF
等于 65535。 - jeha