无符号右移的行为应用于字节变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

考虑下面的java代码片段

byte b=(byte) 0xf1;
byte c=(byte)(b>>4);
byte d=(byte) (b>>>4);

输出

c=0xff
d=0xff

预期输出:

c=0x0f
提问于
用户回答回答于

int

byte b = (byte) 0xf1;

b是签名的,所以它的值是-15。

byte c = (byte) (b >> 4);

b是第一个符号-扩展到整数

byte d = (byte) (b >>> 4);
用户回答回答于

这可能会像预期的那样起作用:

(byte)((0x000000FF & b)>>4)

扫码关注云+社区

领取腾讯云代金券