Java中用反碼表示整數,及int到byte的轉換


Java中的整數都是通過補碼表示的,當整數為正數時,補碼和原碼相同,當整數為負數時,補碼為原碼按位取反(符號位除外),然后加1.

通過一些例子可以比較明顯的看出:

int a = -1;
System.out.println(Integer.toBinaryString(a));
//output:
11111111111111111111111111111111
int a = -128;
System.out.println(Integer.toBinaryString(a));
//output:
11111111111111111111111110000000
 
        

在將int通過(byte)方式轉換為byte類型時,截取最后一個字節。

所以byte的值由int最后一個字節決定,最后一個字節的第一位變為符號位,所以byte的值在127和-128之間。

int a = 128122;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
11111010001111010
122
int a = 127;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
1111111
127
int a = 128;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
10000000
-128

 


免責聲明!

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



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