首頁  >  文章  >  Java  >  為什麼 Java 整數轉換為 132 時位元組結果為 -124?

為什麼 Java 整數轉換為 132 時位元組結果為 -124?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 10:29:03564瀏覽

Why Does a Java Integer Cast to a Byte Result in -124 When It's 132?

Java 在型別轉換中的奇怪行為:揭開-124 之謎

當嘗試在Java 中將整數指派給位元組時,一個有趣的現象觀察結果如下:整數值132 在轉換為位元組時呈現為-124。這個神秘的結果一開始可能會令人費解。

探索補碼之謎

要解開這個謎團,深入研究 Java 的基本資料類型及其表示形式至關重要。在 Java 中,整數型別(例如 int 和 byte)是有符號的,採用二進位補碼表示法。使用這種表示法,最高有效位元表示符號,當數字擴展到更大的位元大小時,保留其值作為最高有效位元。

尋求無符號的幸福

在大多數情況下,希望將位元組解釋為無符號值,並丟棄任何符號資訊。這可以透過位元運算來實現。例如,對帶符號位元組套用遮罩為 0xff 的按位 AND 可以有效地消除符號位,從而顯示無符號值。

揭秘儀式

The過程展開如下:

  1. 作為簽署的位元組整數: 考慮用二進位表示為11111111 的有符號位元組。 Java 將其解釋為 -1。
  2. 與遮罩的位元與:套用與 0xff 的位元與運算屏蔽符號位,產生二進位 00000001。
  3. 轉換後的整數: Java 將遮罩值解釋為無符號整數,即 1以十進位表示。

該技術允許從有符號整數中無縫提取無符號位元組值。

結論

Java 從 int 的轉換由於底層的補碼表示法,to byte 可以引入微妙但令人著迷的行為。了解這些細微差別有助於解開意外的 -124 輸出背後的謎團,使開發人員能夠在 Java 應用程式中有效地操作資料類型。

以上是為什麼 Java 整數轉換為 132 時位元組結果為 -124?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn