为什么PHP_INT_MAX这么小?

时间:2012-12-19 22:09:34

标签: php integer

转换为GB,就像2 GB。

但是我现在正在使用32位Windows运行,而且我可以拥有比这更大的文件。

那么为什么PHP将此数字限制为2147483647?如果Windows可以使用更大的数字,那么PHP也不应该这样做吗?

3 个答案:

答案 0 :(得分:9)

2147483647是您可以使用32位存储的最高签名数字。 PHP以这种方式存储它的数字,因为这是它们存储在您的计算机中的方式。任何更高,数学和一切都变得更复杂。 Windows也将使用32位数字。我不确定它对于大于2 GB的文件是如何工作的,但我想在这些情况下它会以某种方式解决它,代码更复杂。

答案 1 :(得分:5)

2,147,483,647是可以存储在32位中的最大数字。您的处理器只有32个插槽来填充位,任何大于此的数字都会更复杂,需要更多的开销来计算。 相反,您可以拥有的最小数字是-2,147,483,648,这也是因为没有较小的数字可以存储在32位中。

如果想在32位系统上对更大的数字进行计算,则必须解决此限制。肯定有解决方法,但在一般的webapp上,不太可能需要它。

答案 2 :(得分:4)

2,147,483,647是2 31 -1,有符号4字节值的最大值。你可能喜欢使用2 63 -1 = 9,223,372,036,854,775,807。