为什么int的最小值绝对值比最大值大1

您所在的位置:网站首页 最大值和最小值的数学符号 为什么int的最小值绝对值比最大值大1

为什么int的最小值绝对值比最大值大1

2024-07-03 22:21| 来源: 网络整理| 查看: 265

转载自:https://www.cnblogs.com/zhengxq21/p/10348336.html

关于int取值范围的疑问

在Java中int是占4个字节的,意味着它是32位。同时int是有符号的,那就说它最高位不计算在内,可以得出MAX_INT = 01111111111111111111111111111111 恰好等于 2^31 -1

说法1:

MAX_INT + 1 = 100000000000000000000 根据int有符号的定义,第一位是符号位,这样看来,这个数值就是 -0 ; 那么我们再来讨论这样一种场景,按照int的第一个位是符号位的说法 MIN_INT=11111111111111111111111111111111,前面我们计算过 31位的全1 = 2^31 -1, 所以MIN_INT=-2^31 + 1. 这应该是正常思路看待int的最大值和最小值的场景.但是我们还有一个-0没有解决,我们按照之前定义的MIN_INT来计算一下MIN_INT-1 = -2^31 + 1 -1 = -2^31. 咦,我们去掉超过的1位,发现它竟然也是 100000000000000000000 和 -0的含义一样 ,所以我们要解决的-0 可以把原来的MIN_INT-1 作为新的MIN_INT! 这样int的取值范围就是 -2^31 到 2^31 -1

说法2:

当然,说法1是我发现的一种解释, 网上的解释是: 有+0和-0,两个0。因为负数在计算机中都是以补码方式存储的,且没有任何正数的补码是 100000000000000000000 ,所以把 -0 看成 int最小值(符号位参与运算)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3