Java中Integer超出范围问题

本文探讨了Java中Integer类型的溢出问题,通过左移运算演示了数值达到边界后的循环溢出现象,并解释了其背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中Integer超出范围问题

  1. Java中Integer范围
    在Java中Integer范围是2-31到231-1,但是如果超过范围怎么处理?
  2. 使用左移运算验证
    左移运算<<,将二进制向左移动一位,即数值乘以2。
     

System.out.println(1);

System.out.println(Integer.toBinaryString(1));

System.out.println("-----------");

System.out.println(1 << 1);

System.out.println(Integer.toBinaryString(1 << 1));


已知Integer的二进制是32位,那么当1左移31位时达到最高位,即Integer的最小值。

System.out.println(Integer.toBinaryString(1 << 31));

System.out.println(1 << 31);

System.out.println(Integer.MIN_VALUE);

那么此时再向左移动1位会怎么样?
 

System.out.println(Integer.toBinaryString(1 << 32));
System.out.println(1 << 32);


由结果可知,在超出范围时,在高位产生溢出,回到最低位从新开始。可以理解为一个循环,最高位的下一位就是最低位,即第31位之后是第0为,1现在在第31位上,再向左移1位,回到第0位上,即回到十进制的1。

  1. 总结
    Java中数值范围,Integer,Long等整数类型,当范围达到最大范围时,溢出时返回最低位,重新开始。同理向下溢出也是一样的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值