55问答网
所有问题
1 JAVA已知long型的最大值为9223372036854775808,求9223372036854775808+9223372036854775808 为什么等于-
1 JAVA已知long型的最大值为9223372036854775808,求9223372036854775808+9223372036854775808 为什么等于-2?
举报该问题
推荐答案 2010-10-14
溢出了
long最大不是9223372036854775808而是9223372036854775807
因为最高位是符号位,两个相加就溢出了,符号位本来是正,所以是0,但是相加后溢出,符号位变成1,所以就成负数了
Long.MAX_VALUE=9223372036854775807
其二进制值为:0x7FFFFFFFFFFFFFFF,因为最高位是0,留给符号位,其他位为1
如果让Long.MAX_VALUE+Long.MAX_VALUE
则看二进制值,相当于左移一位,变成:
0xFFFFFFFFFFFFFFFE
最低位为0,其他位为1,第一位符号位为1,则为负数,下面各位取补码,即取反+1,得0x10,为2,所以结果是-2
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/IG48QFe4e.html
其他回答
第1个回答 2010-10-14
溢出了,去看看二进制吧
相似回答
大家正在搜
相关问题
java中long类型的取值范围到底是多少呢?
求 java公选课考题 答案
java,如何得出各种类型变量的最大长度
Java长整型的取值范围是-9223372036854775...
java中怎么求1!+2!+3!+4!+5!+6!+7!+8...
java中long类型的取值范围到底是多少
java中的数据类型
java 8种基础类型的使用