考虑以下Java代码片段
byte b=(byte) 0xf1;
byte c=(byte)(b>>4);
byte d=(byte) (b>>>4);
Run Code Online (Sandbox Code Playgroud)
输出:
c=0xff
d=0xff
Run Code Online (Sandbox Code Playgroud)
预期产量:
c=0x0f
Run Code Online (Sandbox Code Playgroud)
怎么样?为b二进制1111 0001
无符号右移之后0000 1111,因此0x0f,但为什么是0xff 怎么了?