为什么int的最大值是2147483647
如何得知int最大能存多大?
可以通过系统定义的宏INT_MAX得到int的最大值,代码如下:
int main() { std::cout << "int的最大值:" << INT_MAX << std::endl; system("pause"); return 0; }
我们可以看到最大值是2147483647,这是如何计算出来的?
为什么int的最大值是2147483647
已知,int占4个字节,而1个字节是8位。
也就是说int占32位,而int是一个带符号的整数,需要留一位来作为符号位,那么实际int可以存放数字的就是31个bit。
而bit是二进制存储的,只能是1和0,要计算int的最大,只能假设int的31位都是1,因此计算出来最终结果是:2147483647。
看到这里,惯性思维会认为int的最小值是:-2147483647,然后实际上最小值是:-2147483648,这又是为什么?
为什么int的最小值是-2147483648
通过把2147483648转成2进制:
会发现符号位是1,其它全是0。因此猜想这可能是编译器的一个优化,这种情况下没有其它通途,就把它当作最小值,可以让最小值再小1。
于是搜索了一下大家的看法,和想的意思差不多,为了不浪费这个二进制数,所以把这个二进制数作为最小数。
参考如下:
int最小值为何是-2147483648,而不是-2147483647