public static void main(String[] args) {
byte b = (byte)128;
System.out.println("b = " + b);
}
打印出来的结果为:b = -128;
首先我们知道byte类型是一个字节,
八个二进制位:
0 0 0 0 0 0 0 0
128 64 32 16 8 4 2 1
那么byte类型的取值范围为:-128~127
而int类型是用4个八二进制位表示
int类型128二进制表示
0000 0000 0000 000 0000 0000 1000 0000
强制转换为byte型时,只取后八位,第一位为正负位那么:
byte类型128的二进制补码表示
1 0 0 0 0 0 0 0
正负位
计算机中运算和储存都是通过二进制补码形式,int类型中128二进制表示第一位是0,为一个整数,而当强制转换为byte类型后,因为计算机通过二进制补码形式运算和储存,则
正负位为1,表示为一个负数,通过运算可知byte类型 128的二进制原码为
1 1 0 0 0 0 0 0 0
为-128
|
|