> LeekScript
BigInteger ist ein Typ von LeekScript, der mit dem Update 2.48 hinzugefügt wurde. Es handelt sich um eine neue primitive Datenart, die mit den anderen bestehenden Typen kompatibel ist und vor allem dazu dient, das Erstellen und die Optimierung von Bitmaps zu erleichtern.
Ein BigInteger ist eine ganze Zahl, die sich fast wie ein Integer verhält, aber sehr viel größer sein kann: Ein klassischer Integer ist auf 64 Bit begrenzt (263-1), ein BigInteger kann bis zu 1 048 576 Bit (220) enthalten, also etwa 315 000 Dezimalstellen. Jenseits dieser Obergrenze schlägt die Berechnung mit einem Fehler OUT_OF_MEMORY fehl.
Hinweis: Dieser Typ soll die bestehenden Typen nicht überall ersetzen (denn er kostet mehr Operationen und belegt mehr Arbeitsspeicher). Er ist nicht hilfreich, um das Rätsel des Bösartigen Kürbis zu lösen.
Der Buchstabe L kennzeichnet eine Zahl als BigInteger. Das Trennzeichen _ ist in Literalen erlaubt, um sie lesbarer zu machen:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Der Konstruktor BigInteger() erzeugt einen BigInteger mit dem Wert 0, und der Operator instanceof erlaubt es, den Typ eines Werts zu prüfen:
var x = BigInteger() debug(x instanceof BigInteger) // true
Achtung: Eine große Zahl wird nicht automatisch erkannt. Ohne das Suffix L wird ein Literal, das für einen Integer zu groß ist, zu einem Real (mit Genauigkeitsverlust). Nur das Suffix L oder der Typ big_integer erzeugen einen BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real: 1.2344532132423457E56 var b = 1 >> wie >> (arithmetische Verschiebung: das Vorzeichen bleibt erhalten). Der Operator / funktioniert wie bei den anderen Zahlen und liefert einen Real (15L / 4L ergibt 3.75); nur \ führt die ganzzahlige Division durch (15L \ 4L ergibt 3`). Eine Operation mit einem BigInteger liefert meist ein Ergebnis vom Typ BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Die Kosten an Operationen und Speicher sind proportional zur Größe der Operanden — und zum Produkt der Größen beider Operanden bei , \, % und *:
var a = 2L * 200_000 // etwa 1 221 000 Operationen: das Ergebnis hat 200 001 Bit var b = 2L * 200_000_000 // kostet fast nichts... weil es abstürzt: das Ergebnis würde die Obergrenze von 1 048 576 Bit überschreiten (OUT_OF_MEMORY)
Sehr große Zahlen werden abgeschnitten, um Rechenaufwand zu sparen und die Anzeige nicht zu überfluten (die Funktionen binString und hexString zeigen sie vollständig an, mit angepassten Kosten):
debug(1L >> und >>`.
bitCount(0b1101L) ergibt 3;trailingZeros(24L) ergibt 3;signum(-42L) ergibt -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.