為什么JAVA中(byte)128結果為-128;(byte)-129結果為127


為什么JAVA中(byte)128結果為-128;(byte)-129結果為127

在JAVA中默認的整型為int型,int型占4個字節,為32位。byte占一個字節為8位。

JAVA中的二進制都是采用補碼形式存儲:
⑴一個數為正,則它的原碼、反碼、補碼相同
⑵一個數為負,則符號位為1,其余各位是對原碼取反,然后整個數加1

int類型的128 原碼為0000 0000 0000 0000 0000 0000 1000 0000

當將int類型128轉換為byte類型時,發生強制轉換,截取了最后8位為

1000 0000 由於第一位代表符號位,按理解應該此處應該表示為-00000 0000應該是一樣的表示0。但是我們都知道byte占8位,28為256,byte最多可以表示256個不同的數值。

0000 0000~0111 1111 128個

1000 0000~1111 1111 128個

如果 byte中0000 00001000 0000表示0浪費了內存,所以byte中1000 0000表示-128。

int類型的-129原碼為1000 0000 0000 0000 0000 0000 1000 0001

補碼為1111 1111 1111 1111 1111 1111 0111 1111

強制轉換為byte類型為0111 1111

0111 1111為正數,值為127


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM