黑马程序员技术交流社区
标题:
计算结果为什么是-128?
[打印本页]
作者:
夏日蓝雪
时间:
2014-6-5 11:00
标题:
计算结果为什么是-128?
本帖最后由 夏日蓝雪 于 2014-6-6 10:34 编辑
运行结果竟然是-128,不明白,请大虾指点。
public class Practise {
public static void main(String[] args)
{
byte b = 127;
b +=1;
System.out.println(b);
}
}
超出范围,结果错误没问题,但-128是怎么得到的呢?求指导。
作者:
superob123
时间:
2014-6-5 11:29
因为10000000所代表的数就是-128,如果要编写计算器小程序,这是首要考虑的问题
作者:
李小然
时间:
2014-6-5 11:29
b +=1;
这句话意思是: b = b+1;
因为b=127
所以b + 1 = 128
b为byte类型 1为int类型 两个相加为int类型
int占4个字节 128在内存中表示为
0000 0000 - 0000 0000 -0000 0000 -1000 0000
b = 128,即 将128转换为byte
byte占一个字节 只截取int中四个字节中后面一个字节
即 1000 0000
这八位中 首位代表符号位 为1,则数字为负
求它的绝对值,即求补码 规则:出符号位不变,其余取反并加1
1000 0000 --> 1111 1111 ---->1 0000 0000(128)
符号位 (-) +绝对值(128) = -128
作者:
上杉
时间:
2014-6-5 11:55
学习学习:lol:lol
作者:
汤姆纳斯
时间:
2014-6-5 13:37
又长知识了
作者:
莫非
时间:
2014-6-5 14:27
学习了,赞
作者:
18353665932
时间:
2014-6-5 14:53
版主太牛了,顶!!!
作者:
夏日蓝雪
时间:
2014-6-5 21:25
李小然 发表于 2014-6-5 11:29
b +=1;
这句话意思是: b = b+1;
因为b=127
清楚简练,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2