一个问题~~~有关java基础~~overflow,等待~~

cxhz_cn 2002-03-11 04:58:46
public class overflow {

public static void main(String arg[]){
int big = 0x7fffffff;
int bigger =0;
for (int i=0;i<10;i++){
bigger= big * i;
System.out.println("big"+big);
System.out.println("bigger"+bigger);
}
}
}


结果如下:
big2147483647
bigger0
big2147483647
bigger2147483647
big2147483647
bigger-2
big2147483647
bigger2147483645
big2147483647
bigger-4
big2147483647
bigger2147483643
big2147483647
bigger-6
big2147483647
bigger2147483641
big2147483647
bigger-8
big2147483647
bigger2147483639

为啥会有这样的答案~~
在i是奇数倍的时候~~~
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxhz_cn 2002-03-11
  • 打赏
  • 举报
回复
给分了
heifei 2002-03-11
  • 打赏
  • 举报
回复
0x7fffffff + 1 = 0x80000000
也就是首位为1区域为零,80000000换位十进制2147483648
0x80000000为-2147483648
类推(0x7fffffff*2)=0x7fffffff + 0x7fffffff=-2
Luke_cn 2002-03-11
  • 打赏
  • 举报
回复
对于int类型来说当超出其范围时,不会抛出一个异常。
正数的最高位是0,当超出后,0变为1,此时就会变成负数。

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧