Как я могу выполнить 64-битную арифметику в Perl?
Вопрос
Я новичок в perl,
Могу ли я просто использовать 64-битную арифметику в Perl?
Например
$operand1 = 0xFFFFFFFFFFFF; # 48 bit value
$operand2 = 0xFFFFFFFFFFFF; # 48 bit value
$Result = $operand1 * $operand2;
- Я в основном ищу замену int64_t в perl.
- Есть ли какой-нибудь способ указать, является ли переменная знаковой или беззнаковой?
Решение
Да, однако вам необходимо скомпилировать Perl с поддержкой 64-разрядной версии.
Другие советы
Видишь большой член:
Прозрачная поддержка BigInteger для Perl...
Все операторы (включая базовые математические операции), за исключением оператора range
..
перегружены.Целочисленные константы создаются как правильные BigInts.Константы с плавающей запятой усекаются до целого числа.Все части и результаты выражений также усекаются.
В отличие от целое число, эта прагма создает целочисленные константы, размер которых ограничен только доступной памятью и процессорным временем...
Да, Perl автоматически обрабатывает арифметику больших целых чисел за вас.Однако Perl не предлагает различия между типами со знаком и без знака (в этом нет необходимости, поскольку не существует фиксированных границ для большого диапазона целых чисел).
В перлномер страница руководства содержит дополнительную информацию о различных числовых форматах, поддерживаемых Perl.
Имейте в виду, 64-битная арифметика в Perl - это одно, но то, как она отображается sprintf %d %u и %s, - это второе.Текущая версия perl поддерживает 64 бита без проблем, но формат sprintf %d отсутствует, %b аналогично .
use bigint
это позволит Perl корректно обрабатывать целые числа произвольного размера без переполнения целых чисел.
Например.:
use bigint;
print 1 << 256;
будет печатать:
115792089237316195423570985008687907853269984665640564039457584007913129639936