黑马程序员技术交流社区
标题:
请教一个小题目
[打印本页]
作者:
927233671
时间:
2014-3-19 22:36
标题:
请教一个小题目
本帖最后由 927233671 于 2014-3-20 09:11 编辑
class Test
{
public static void main(String[] args)
{
byte a=127;
a+=1;
System.out.println(a);
}
}
复制代码
请问一下为什么结果是-128而不是128
作者:
方青木
时间:
2014-3-19 22:59
数据在内存中是以补码的形式存储的
127的二进制补码是01111111
当byte类型的127在加1后,在内存中的二进制码就变成了10000000
最高位变成1代表为负数,补码变源码是取反在加1
所以会是-128
作者:
歌尽繁华
时间:
2014-3-19 23:39
byte的取值范围是-128~127
作者:
linweiwen
时间:
2014-3-19 23:40
哎,楼上答题太快了,
就是超过了byte存储范围的原因,
楼上答得很详细。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2