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