[英]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.