Domanda

Sono un novizio perl,

Posso semplicemente utilizzare a 64 bit aritmetica in Perl?

Ad esempio

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

$Result = $operand1 * $operand2;
  • Sto fondamentalmente alla ricerca di un sostituzione per l'int64_t in perl.
  • C'è un modo di menzionare, se il variabile è firmato o non firmato?
È stato utile?

Soluzione

Sì, ma è necessario disporre di Perl compilato con il supporto a 64-bit.

Altri suggerimenti

bigint :

  

Supporto trasparente BigInteger per Perl ...

     

Tutti gli operatori (incluse le operazioni matematiche di base), tranne il .. operatore di intervallo sono sovraccarichi. costanti intere sono creati come BigInts corrette.

     

costanti in virgola mobile vengono troncati a intero. Tutte le parti ed i risultati di espressioni sono anche troncati.

     

A differenza intero , questo pragma crea costanti intere che sono limitati solo nella loro dimensione dalla disponibile memoria e CPU tempo ...

Si, Perl gestisce automaticamente grandi aritmetica intera per voi. Tuttavia, Perl non offre una distinzione tra i tipi con e senza segno (non c'è bisogno, dal momento che non ci sono fissi limiti su un'ampia gamma intero).

Il href="http://perldoc.perl.org/perlnumber.html" rel="nofollow noreferrer"> perlnumber pagina di manuale

Essere consapevoli, a 64 bit aritmetica in Perl è uno, ma ciò che è visualizzato dal sprintf% d% ue% s, è secondo. Versione perl attuale supporta 64bits senza problemi, ma formato sprintf% d non,% b allo stesso modo.

use bigint farà Perl gestire interi dimensione arbitraria correttamente senza integer overflow.

Per esempio:.

use bigint;
print 1 << 256;

stamperà:

115792089237316195423570985008687907853269984665640564039457584007913129639936
scroll top