value&0xff在Java中有什么作用?
我有以下Java代码:
byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)int result = value & 0xff;
打印时结果为254,但我不知道此代码如何工作。如果&运算符只是按位运算符,那么为什么不生成字节而是取整数?
回答:
它设置result
为将8位value
放入的最低8位得到的(无符号)值result
。
诸如此类的必要原因是byte
Java中的一种签名类型。如果你刚刚写过:
int result = value;
那么result最终将得到值ff ff ff fe而不是00 00 00 fe。另一个微妙之处在于,将&定义为仅对int值1进行操作,因此会发生以下情况:
value
被提升为int(ff ff ff fe)
。0xf
f是int
文字(00 00 00 ff)
。- 将
&
被施加到得到所希望的值result
。(该点是,转换
int
发生之前的&
施加操作者)。
1 好吧,不完全是。该&
运营商工作的long价值以及,如果操作数是一个long
。但是没有byte
。请参阅Java语言规范的15.22.1和5.6.2节。
以上是 value&0xff在Java中有什么作用? 的全部内容, 来源链接: utcz.com/qa/426589.html