11

我是perl新手,

我可以在 Perl 中简单地使用 64 位算术吗?

例如

$operand1 = 0xFFFFFFFFFFFF;   # 48 bit value
$operand2 = 0xFFFFFFFFFFFF;   # 48 bit value

$Result = $operand1 * $operand2;
  • 我基本上是在寻找 perl 中 int64_t 的替代品。
  • 有什么办法可以提及,如果变量是有符号的还是无符号的?
4

5 回答 5

14

是的,但是您需要使用 64 位支持编译 Perl。

于 2009-12-08T02:40:44.633 回答
11

bigint

对 Perl 的透明 BigInteger 支持...

除范围运算符外的所有运算符(包括基本数学运算)..都被重载。整数常量被创建为适当的 BigInts。

浮点常量被截断为整数。表达式的所有部分和结果也会被截断。

integer不同,此 pragma 创建整数常量,其大小仅受可用内存和 CPU 时间的限制......

于 2009-12-08T02:42:34.273 回答
5

是的,Perl 会自动为您处理大整数运算。然而,Perl 没有区分有符号和无符号类型(没有必要,因为大整数范围没有固定界限)。

perlnumber手册页包含有关 Perl 支持的不同数字格式的更多信息。

于 2009-12-08T02:38:59.817 回答
0

请注意,Perl 中的 64 位算术是一个,但 sprintf %d %u 和 %s 显示的是第二个。当前的 perl 版本支持 64 位没有问题,但 sprintf %d 格式不支持, %b 同样。

于 2013-05-16T11:57:16.147 回答
0

use bigint将使 Perl 正确处理任意大小的整数而不会出现整数溢出。

例如。:

use bigint;
print 1 << 256;

将打印:

115792089237316195423570985008687907853269984665640564039457584007913129639936
于 2018-02-07T17:08:31.590 回答