在Java中,按位运算会导致类型转换为整数,并且还会导致符号扩展.例如,预期如下:
byte b = -1;
System.out.println(b >> 1);//-1
Run Code Online (Sandbox Code Playgroud)
在Java中,字符以UTF-16编码,每个单元用2个字节表示.
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
Run Code Online (Sandbox Code Playgroud)
我期待-1而不是32767.为什么在应用按位操作之前,在类型转换期间标志没有延长?有任何想法吗?
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |