Wie kann ich tun, 64-Bit-Arithmetik in Perl?
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?
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