Integer.MAX_VALUE * 2返回-2,Integer.MIN_VALUE * 2返回0?

本文探讨了Java中Integer类型的MAX_VALUE和MIN_VALUE在进行数学运算时可能出现的溢出现象。通过示例展示了当超过最大值加1会得到最小值,以及最小值减1变为最大值的特殊情况。同时,解释了最小值乘以偶数得到0的原因,以及最小值乘以奇数仍为最小值的逻辑。这些内容对于理解Java整数运算的边界行为至关重要。

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

int最大值和最小值计算

1、Integer.MAX_VALUE*2

        // 2147483647 二进制是:01111111111111111111111111111111       
        int a = Integer.MAX_VALUE;
        // -2147483648 二进制是:10000000000000000000000000000000
        int b = Integer.MIN_VALUE;
        // true 意思就是01111111111111111111111111111111 + 1 = 10000000000000000000000000000000
        // 相当于 2147483647 + 1 = -2147483648
        System.out.println(a+1);
        // 意思就是2147483647 + 2147483647 = 2147483647 + 1 + 2147483646 
        //                                   = -2147483648 + 2147483646
        //                                   = -2
        System.out.println(a*2);

2、Integer.MIN_VALUE*2

        // 2147483647 二进制是:01111111111111111111111111111111
        int a = Integer.MAX_VALUE;
        // -2147483648 二进制是:10000000000000000000000000000000
        int b = Integer.MIN_VALUE;
        // 意思就是:10000000000000000000000000000000 - 1 = 01111111111111111111111111111111
        // 相当于-2147483648 - 1 = 2147483647
        System.out.println(b-1);
        // 意思就是-2147483648 + (-2147483648) = -2147483648 - 2147483648
        //                                       = -2147483648 -1 - 2147483647
        //                                       = 2147483647 - 2147483647
        //                                       = 0
        // 最小值*偶数 = 0; 最小值*奇数 = 最小值
        System.out.println(b*0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值