Como posso fazer aritmética de 64 bits em Perl?
Pergunta
Eu sou um novato perl,
Posso simplesmente usar aritmética de 64 bits em Perl?
Por exemplo
$operand1 = 0xFFFFFFFFFFFF; # 48 bit value
$operand2 = 0xFFFFFFFFFFFF; # 48 bit value
$Result = $operand1 * $operand2;
- Eu estou basicamente procurando um substituto para o int64_t em perl.
- Existe alguma maneira de mencionar, se o variável é assinado ou não assinado?
Solução
Sim, porém você precisa ter Perl compilado com suporte de 64 bits.
Outras dicas
bigint :
Suporte BigInteger transparente para Perl ...
Todos os operadores (incluindo operações matemáticas básicas), exceto o
..
operador de intervalo estão sobrecarregadas. As constantes inteiras são criados como valores BIGINT adequadas.flutuantes constantes de ponto são truncados para integer. Todas as peças e os resultados das expressões também são truncados.
inteiro , este pragma cria inteiro constantes que só são limitados no seu tamanho pelo tempo de memória disponível e CPU ...
Sim, Perl lida automaticamente com grande aritmética inteira para você. No entanto, Perl não oferece uma distinção entre os tipos assinados e não assinados (não há necessidade, já que não existem limites fixos na grande variedade inteiro).
O perlnumber página de manual tem mais informações sobre os diferentes formatos numéricos suportados por Perl.
Esteja ciente, de 64 bits aritmética em Perl é um, mas o que é exibido por sprintf% d% u e% s, é o segundo. versão do Perl suporta atuais 64bits, sem problemas, mas não formato sprintf% d,% b mesmo.
use bigint
fará inteiros tamanho alça arbitrária Perl corretamente sem estouro de inteiro.
Por exemplo:.
use bigint;
print 1 << 256;
imprimirá:
115792089237316195423570985008687907853269984665640564039457584007913129639936