黑马程序员技术交流社区

标题: 请教一个小题目 [打印本页]

作者: 927233671    时间: 2014-3-19 22:36
标题: 请教一个小题目
本帖最后由 927233671 于 2014-3-20 09:11 编辑
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 byte a=127;
  6.                 a+=1;
  7.                 System.out.println(a);
  8.         }
  9. }
复制代码
请问一下为什么结果是-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