1

当我运行这个:

echo ((1 << 56) | (7 << 52) | 4437313);

32bitPHP 返回: 24360257

64bitPHP 返回: 103582791433958721

我将如何在安装 php时返回64bit答案? 如果这有什么不同,我有 BC 扩展名吗?32bit

4

2 回答 2

1

在 32 位处理器上不能移动超过 32 位。

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

http://php.net/manual/en/language.types.integer.php

于 2013-07-07T15:16:24.930 回答
1

Don't know if it can be achieved with BC extension, but with GMP it is:

function gmp_shiftl($x,$n) {
    return gmp_mul($x, gmp_pow(2, $n)); 
}
$res = gmp_or(gmp_or(gmp_shiftl('1','56'), gmp_shiftl('7','52')), '4437313');
echo gmp_strval($res);
于 2013-07-07T15:25:35.410 回答