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

 

posted on 2016-08-11 17:56  孜然狼  阅读(2472)  评论(0编辑  收藏  举报

导航