Java 中的值和0xff 的位元操作
在此Java 程式碼片段中:
<code class="java">byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned) int result = value & 0xff;</code>
出現在此Java 程式碼片段中:
出現了問題: 為什麼value 與0xff 之間的位元與運算(&) 產生結果254(無符號)而不是預期的 -2(有符號)? 與 C 不同,byte 在 Java 中是有符號型。在不進行位元運算的情況下將值賦給 int 將會得到有符號值 -2。然而,將 & 與 0xff 一起使用可以實現預期的無符號值。 這裡的關鍵是 & 對 int 值進行操作。當 value(一個位元組)與 & 一起使用時,它首先被提升為 int。同樣,0xff 是一個 int 文字。然後 & 運算從結果的最低有效 8 位元中的值產生 8 位元二進位值。以上是為什麼「value & 0xff」在 Java 中產生無符號值,即使「value」是有符號位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!