Java中Integer超出范围问题
- Java中Integer范围
在Java中Integer范围是2-31到231-1,但是如果超过范围怎么处理? - 使用左移运算验证
左移运算<<,将二进制向左移动一位,即数值乘以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)); |

由结果可知,在超出范围时,在高位产生溢出,回到最低位从新开始。可以理解为一个循环,最高位的下一位就是最低位,即第31位之后是第0为,1现在在第31位上,再向左移1位,回到第0位上,即回到十进制的1。
- 总结
Java中数值范围,Integer,Long等整数类型,当范围达到最大范围时,溢出时返回最低位,重新开始。同理向下溢出也是一样的。
Java Integer 溢出解析
本文探讨了Java中Integer类型的溢出问题,通过左移运算演示了数值达到边界后的循环溢出现象,并解释了其背后的原理。
1053

被折叠的 条评论
为什么被折叠?



