黑马程序员技术交流社区
标题:
byte x = 127; x++; 虚拟机是怎么计算的
[打印本页]
作者:
吴光新
时间:
2013-8-3 16:48
标题:
byte x = 127; x++; 虚拟机是怎么计算的
byte x = 127;
x++;
System.out.println(x);
这个输出结果是-128,求解虚拟机是怎么计算的?
为什么127自增是-128?
作者:
乔小北
时间:
2013-8-3 16:57
一个字节是8位,127就是01111111,再加一就是10000000,就是-128,这是二进制的知识。
作者:
肥猫
时间:
2013-8-3 19:25
额,其实我也不知道啊,应该是这样吧,计算机里底层都是要换成二进制运算的,127就是全1,加你就全变0,因为多出来的首位是1,所以是-128.
作者:
oath
时间:
2013-8-6 07:25
呵呵 你看下我说的是不是
byte型到128就自动提为int了,使用++符号, 得到的还是8位的,将128的16位的二进制前面的0去掉了,只剩下10000 0000,这个二进制是补码,表示的数是 -128
作者:
lijia113
时间:
2013-8-6 20:50
对,因为byte字节是八位,127的二进制表达式是0111 1111,127+1之后的二进制是1000 0000,x自增之后,转换成了int型,而首位为1,所以自增后的二进制前面三个字节全部补的是1,就是1111 1111 1111 1111 1111 1111 1000 0000,jvm会判断前面代表符号位,所以转换成十进制后成了-128
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2