【问题标题】:Why is PHP_INT_MAX so small?为什么 PHP_INT_MAX 这么小?
【发布时间】:2012-12-20 10:20:55
【问题描述】:

换算成 GB,好像是 2 GB。

但我现在在 32 位 Windows 上运行,我可以拥有比这更大的文件。

那么为什么 PHP 将这个数字限制为 2147483647 呢?如果 Windows 可以处理更大的数字,PHP 不应该也可以吗?

【问题讨论】:

标签: php integer


【解决方案1】:

2147483647 是您可以用 32 位存储的最高有符号数。 PHP 以这种方式存储它的数字,因为它们就是这样存储在您的计算机中的。再高一点,数学和一切都会变得复杂得多。 Windows 也将使用 32 位数字。我不确定它如何处理大于 2 GB 的文件,但我猜在这些情况下它会以某种方式解决它,并且代码更复杂。

【讨论】:

    【解决方案2】:

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

    如果想在 32 位系统上计算更大的数字,则必须解决此限制。当然有一些变通方法,但在一般的 web 应用上不太可能需要。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 不,只有一半:2^31-1。 2^32-1 是最大 unsigned 值。
      猜你喜欢
      • 2016-04-24
      • 2015-02-13
      • 2023-03-14
      • 2014-11-18
      • 2010-10-30
      • 2012-11-08
      • 1970-01-01
      • 2015-08-17
      • 2012-08-05
      相关资源
      最近更新 更多