繁体   English   中英

Java Bitshift操作:将int转换为字节时出错

[英]Java Bitshift Operation: error converting int to byte

谁能告诉我下面的代码为什么抛出编译错误“无法从int转换为byte”?

byte x = 2;  
byte y = (x >> 1);

我的意思是我清楚地将x和y都声明为字节,并且'x >> 1'的取值为1,即仍在字节范围内。
当我做类似的事情时

byte x = -2;  
System.out.println(x >>> 1);

我希望结果是126,因为我在b1111 1101的最左位0111 1110移动了0 但是控制台正在打印“ 2147483647 ”,因此看来我的字节在移入0之前已转换为整数。为什么? 请帮帮我。

仅仅因为x >> 1返回一个int所以您只需要将其显式转换为下一byte

byte y = (byte)(x >> 1);

另请注意,由于它是一个int运算符(或long取决于规范中的左侧操作数§15.19 ),因此其所有操作数都必须为int类型,这意味着在您的情况下x将被隐式转换为int也就是x >> 1等效于(int)x >> 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM