JAVA入门 新手问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 16:17:56
public class ByteInt {
public static void main(String arg[]){
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);
System.out.println(b3);
}
}
输出b3=-100怎么算的啊?

89+67=156
byte=+127 -128

156-128-128

溢出,156二进制表示的8位有符号数就是-100

b1 + b2 = 156了
byte 的范围是 -128~127 ,所以结果是不正确的

为什么是-100?

156 = 128 + 28 (128自动转为-128了)