【问题标题】:INT max size for 32bit system32 位系统的 INT 最大大小
【发布时间】:2012-02-04 23:01:07
【问题描述】:

假设我们谈论的是 32 位系统。

PHP 不支持无符号 INT。这意味着 INT 值应介于 -2,147,483,648 和 2,147,483,647 值之间。 INT 需要 4 个字节来存储一个 32 位长度的值。

这是否意味着我只有 31 位的值和 1 位的符号?或者我可以使用整个 32 位来存储一个值?

【问题讨论】:

    标签: php int 32-bit unsigned-integer


    【解决方案1】:

    首先,如果您想进行大数字(例如,通常大于 10k)的计算,您应该使用bcmath 任意精度模块。

    其次,官方的 php 实现在内部使用 Two's complement 来表示数字,就像几乎所有其他编译器和解释器一样。由于有符号位的entropy(如果将0算为正数[1])为1,而31位的熵是,嗯,31,你可以存储232 = 4 294 967 296 个不同的值。您如何解释它们取决于您的应用程序。


    [1] - 0 既不是正也不是负。

    【讨论】:

      【解决方案2】:

      正在使用整个 32 位。只是默认输出函数将其解释为有符号整数。如果要显示值“原始”,请使用:

      printf("%u", -1);    //  %u for unsigned
      

      由于 PHP 处理内部有符号的整数,因此您只能使用位算术,而不能对它们使用加法/乘法等 - 如果您希望它们的行为类似于无符号整数。

      【讨论】:

        【解决方案3】:

        是的,如果它使用无符号整数,它将使用 32 位来存储它,因为在这种情况下您不需要符号,但由于它仅支持有符号整数,因此 32 位系统将具有 31 位的值和 1 位的值sign s0 最大有符号整数范围是 -2147483648 到 2147483647。

        【讨论】:

          【解决方案4】:

          据我所知,在 32 位系统上,可能的最大正整数是 2147483647 上面的值将是浮点值,因为 php 中的浮点值可以取值高达 10000000000000。

          【讨论】:

          • 最大浮点值取决于平台,但肯定超过 10,000,000,000,000 (1e13)。我系统上的 PHP 似乎仅限于 1.7976e308。
          【解决方案5】:

          2147483647 是通常的值 2^31-1。 1 位代表符号,-1 因为我们也代表 0。

          来自手册: “整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。64 位平台的最大值通常约为 9E18。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。"

          【讨论】:

            【解决方案6】:

            二进制补码最常用于存储数字,这意味着 1 位不会浪费在符号上。

            http://en.wikipedia.org/wiki/Two's_complement

            在 PHP 中,如果某个数字超出平台的 INT_MAX,它会将其转换为浮点值。

            【讨论】:

              【解决方案7】:

              通常对于 32 位整数,有符号和无符号之间的区别只是您如何解释值。例如,(-1)+1 对于有符号和无符号都是 1,对于有符号,这是很明显的,对于无符号,只有当你只是切断溢出时,它当然是正确的。所以你确实有 32 位来存储值,只是碰巧有 1 位的解释与其他位不同。

              【讨论】:

                猜你喜欢
                • 2013-04-12
                • 2011-05-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-01-28
                • 1970-01-01
                相关资源
                最近更新 更多