簡體   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