在 Java 中,按位运算会导致类型转换为整数并且还会导致符号扩展。例如,预计会出现以下情况:
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。为什么在应用按位运算之前在类型转换期间没有扩展符号?有任何想法吗?