> LeekScript
BigInteger is een type van LeekScript dat is toegevoegd in update 2.48. Het is een nieuwe primitieve die compatibel is met de andere bestaande types en die vooral dient om het maken en optimaliseren van bitmaps te vergemakkelijken.
Een BigInteger is een geheel getal dat zich bijna net zo gedraagt als een Integer, maar veel groter kan zijn: een klassieke Integer is beperkt tot 64 bits (263-1), een BigInteger kan tot 1 048 576 bits (220) bevatten, ofwel ongeveer 315 000 decimale cijfers. Boven dit plafond mislukt de berekening met een OUT_OF_MEMORY-fout.
Opmerking: Dit type is niet bedoeld om de bestaande types overal te vervangen (want het kost meer bewerkingen en gebruikt meer werkgeheugen). Het is niet nuttig om het raadsel van de Kwade Pompoen op te lossen.
De letter L wordt gebruikt om een getal als BigInteger aan te duiden. Het scheidingsteken _ is toegestaan in literals om ze leesbaarder te maken:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
De constructor BigInteger() maakt een BigInteger met waarde 0, en met de operator instanceof kun je het type van een waarde testen:
var x = BigInteger() debug(x instanceof BigInteger) // true
Let op: een groot getal wordt niet automatisch gedetecteerd: zonder het achtervoegsel L wordt een literal die te groot is voor een Integer een Real (met verlies van precisie). Alleen het achtervoegsel L of het type big_integer maakt een BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real : 1.2344532132423457E56 var b = 1 >> zich als >> (rekenkundige verschuiving: het teken blijft behouden). De operator / werkt zoals op de andere getallen en geeft een Real terug (15L / 4L is 3.75); alleen \ voert een gehele deling uit (15L \ 4L is 3`). Een bewerking met een BigInteger geeft meestal een resultaat van het type BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
De kosten in bewerkingen en in geheugen zijn evenredig met de grootte van de operanden — en met het product van de groottes van beide operanden voor , \, % en *:
var a = 2L * 200_000 // ongeveer 1 221 000 bewerkingen: het resultaat is 200 001 bits groot var b = 2L * 200_000_000 // kost bijna niets... omdat het crasht: het resultaat zou het plafond van 1 048 576 bits overschrijden (OUT_OF_MEMORY)
Zeer grote getallen worden afgekapt om de berekeningen te beperken en de weergave niet te overladen (de functies binString en hexString tonen ze volledig, met aangepaste kosten):
debug(1L >> en >>`.
bitCount(0b1101L) is 3;trailingZeros(24L) is 3;signum(-42L) is -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.