Frage

Ich bin ein Perl-Neuling,

Kann ich einfach verwenden 64-Bit-Arithmetik in Perl?

Zum Beispiel

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

$Result = $operand1 * $operand2;
  • Ich suche im Grunde für eine Ersatz für die int64_t in Perl.
  • Gibt es eine Möglichkeit zu nennen, wenn die Variable wird mit oder ohne Vorzeichen?
War es hilfreich?

Lösung

Ja, aber müssen Sie Perl mit 64-Bit-Unterstützung kompiliert haben.

Andere Tipps

Siehe Bigint :

  

Transparent BigInteger Unterstützung für Perl ...

     

Alle Operatoren (einschließlich grundlegenden mathematischen Operationen) mit Ausnahme des Bereichsoperator .. sind überlastet. Integer Konstanten werden als richtiges BigInts erstellt.

     

Gleitpunkt Konstanten werden abgeschnitten integer. Alle Teile und Ergebnisse von Ausdrücken sind auch abgeschnitten.

     

Im Gegensatz zu integer , schafft dies Pragma ganzzahlige Konstanten, die in ihrer Größe begrenzt werden durch die verfügbare Speicher und CPU-Zeit ...

Ja, Perl sorgt automatisch für große Integer-Arithmetik für Sie. Allerdings ist Perl nicht zwischen mit und ohne Vorzeichen Typen anbietet (es gibt keine Notwendigkeit, da es keine Grenzen für großen Integer-Bereich festgelegt).

Die perlnumber Handbuch enthält weitere Informationen zu den verschiedenen Zahlenformaten, die von Perl unterstützt.

Bitte beachten Sie, 64-Bit-Arithmetik in Perl ist ein, aber was es von sprintf% d% angezeigt wird, u und% s, ist an zweiter Stelle. Aktuelle Perl-Version unterstützt 64-Bit ohne Probleme, aber sprintf% d-Format nicht,% b ebenfalls.

use bigint macht Perl beliebige Größe ganze Zahlen korrekt verarbeiten, ohne Integer-Überlauf.

Zum Beispiel:.

use bigint;
print 1 << 256;

druckt:

115792089237316195423570985008687907853269984665640564039457584007913129639936
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top