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?
Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top