Java基本数据类型byte溢出如何取值
1、byte的取值范围 -128~127;
2、在计算机系统中,因为在计算机中没有-0的概念,为了统编码,数值一律用补码来存储
正数的补码 = 原码
负数的补码 = 原码取反 + 1
3、分析代码及赋值结果
由于是用计算机用补码来存储的(第一位为符号位:1表示负,0表示正)
1、在 a1 = 127; 时还未溢出,依旧是byte型
补码=原码为 0111 1111
故结果为127
2、在 a2 = 128; 时已经溢出(此时应该为short型)
原码为 00000000 10000000
强制转换为 byte型,故对二进制进行截取
原码为 1000 0000 (第一位符号为1,表示负数)
补码=原码取反+1 为 1000 0000
故结果为-128
3、a3、a4、a5也以此类推