Java中Integer超出范围问题

小咪咪 2021-09-21 15:42 825阅读 0赞

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));

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







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

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

System.out.println(Integer.MIN_VALUE);

20210126134709645.png

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







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

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

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

发表评论

表情:
评论列表 (有 0 条评论,825人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java数组超出范围访问问题

    在Java中,数组超出范围访问(也称为数组越界)是一个常见的错误,它发生在尝试访问数组中不存在的索引时。Java数组是基于零的索引,这意味着数组的第一个元素位于索引0,最后一个