我是个新手,
我可以在Perl中简单地使用64位算法吗?
例如
$operand1 = 0xFFFFFFFFFFFF; # 48 bit value
$operand2 = 0xFFFFFFFFFFFF; # 48 bit value
$Result = $operand1 * $operand2;
答案 0 :(得分:13)
是的,但是你需要使用64位支持编译Perl。
答案 1 :(得分:10)
请参阅bigint:
透明BigInteger支持Perl ......
除了范围运算符
..
之外的所有运算符(包括基本数学运算)都被重载。整数常量被创建为适当的BigInts。浮点常量被截断为整数。表达式的所有部分和结果也被截断。
与integer不同,这个pragma创建了整数常量,它们的大小仅受可用内存和CPU时间的限制......
答案 2 :(得分:5)
是的,Perl会自动为您处理大整数运算。但是,Perl不提供有符号和无符号类型之间的区别(没有必要,因为在大整数范围内没有固定的边界)。
perlnumber手册页提供了有关Perl支持的不同数字格式的更多信息。
答案 3 :(得分:0)
请注意,Perl中的64位算术是一个,但sprintf%d%u和%s显示的是第二个。 当前的perl版本支持64位没有问题,但是sprintf%d格式不是,%b同样。
答案 4 :(得分:0)
use bigint
将使Perl正确处理任意大小的整数而不会出现整数溢出。
例如:
use bigint;
print 1 << 256;
将打印:
115792089237316195423570985008687907853269984665640564039457584007913129639936