黑马程序员技术交流社区
标题:
溢出问题
[打印本页]
作者:
ztwztw
时间:
2014-1-5 21:05
标题:
溢出问题
class Demo {
int y = 3;
public static void main(String[] args) {
int x = 173;
byte b = 127;
x = x + b;
b = (byte)(b + x); // 明明byte型会自动提升为int型运算,运算结果x=300我可以理解,但是为什么b=44?
System.out.println(b);
System.out.println(x);
}
}
这个时候b= -85;这是怎么算出来的。为什么这么算啊
作者:
汤柳清
时间:
2014-1-11 19:38
b+x=300
300=1 0010 1100是负数,在计算机内存储的是补码
转换成补码,就是取反,再加1,即1 1101 0101
再转换成字节,截取低八位,就是1101 0101=-85
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2