问题在于,
int在进行移位 *** 作之前,所有参数都首先被提升为:
byte b = (byte) 0xf1;
b已签名,因此其值为-15。
byte c = (byte) (b >> 4);
b首先将符号扩展为整数
-15 = 0xfffffff1,然后向右移,
0xffffffff并通过强制转换为截断
0xff为
byte。
byte d = (byte) (b >>> 4);
b首先将符号扩展为整数
-15 = 0xfffffff1,然后向右移,
0x0fffffff并通过强制转换为截断
0xff为
byte。
您可以做
(b & 0xff) >>> 4以获得所需的效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)