为了账号安全,请及时绑定邮箱和手机立即绑定

Java和0xff的值是什么?

Java和0xff的值是什么?

陪伴而非守候 2019-08-26 10:44:17
Java和0xff的值是什么?我有以下Java代码:byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)int result = value & 0xff;打印时结果是254,但我不知道这段代码是如何工作的。如果&运算符只是按位,那么为什么它不会产生一个字节而是一个整数呢?
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

它设置result为(无符号)值,将8位置value于最低8位result

这样的事情是必要的,因为它byte是Java中的签名类型。如果你刚才写道:

int result = value;

然后result最终得到的价值ff ff ff fe而不是00 00 00 fe。更进一步的细微之处在于,它&被定义为仅在int1上运行,因此会发生以下情况:

  1. value被提升为intff ff ff fe)。

  2. 0xff是一个int文字(00 00 00 ff)。

  3. &被施加到得到所希望的值result

(该点是,转换int发生之前&施加操作者)。

嗯,不太好。该&运营商工作的long价值以及,如果操作数是一个long。但不是byte。请参阅Java语言规范,第15.22.1节和第5.6.2节。


查看完整回答
反对 回复 2019-08-26
?
阿晨1998

TA贡献2037条经验 获得超6个赞

以32位格式系统的十六进制值0xff表示00000000000000000000000011111111255(15*16^1+15*16^0)十进制。并且按位&运算符屏蔽与第一个操作数中相同的8个最右位。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 1271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信