问题引入,上代码
public class AutoVarConver{
public static void main(String []args){
int x = 2000;
byte x1 = (byte)x;
System.out.println(x1);
}
}
大家觉得答案是多少?2000?127?
正确答案
原因分析【要有计算机组成原理知识】
由于计算机以补码形式存放数据,2000补码为:
byte占一个字节(8位2进制)所以范围-127-127;
取上述二进制后八位即11010000,补码形式转换为十进制结果为-48.