当我运行这个:
echo ((1 << 56) | (7 << 52) | 4437313);
32bit
PHP 返回: 24360257
64bit
PHP 返回: 103582791433958721
我将如何在安装 php时返回64bit
答案?
如果这有什么不同,我有 BC 扩展名吗?32bit
在 32 位处理器上不能移动超过 32 位。
整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。64 位平台的最大值通常约为 9E18。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。
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);