> LeekScript
BigInteger er en type i LeekScript som ble lagt til i oppdatering 2.48. Det er en ny primitiv type som er kompatibel med de andre eksisterende typene, og som særlig brukes til å gjøre det enklere å lage og optimalisere bitmaps.
En BigInteger er et heltall som oppfører seg nesten som en Integer, men som kan være mye større: en vanlig Integer er begrenset til 64 bit (263-1), mens en BigInteger kan inneholde opptil 1 048 576 bit (220), altså omtrent 315 000 desimalsifre. Over dette taket feiler beregningen med feilen OUT_OF_MEMORY.
Merk: Denne typen er ikke ment å erstatte de eksisterende typene overalt (siden den koster mer i operasjoner og bruker mer arbeidsminne). Den er ikke nyttig for å løse gåten til Potiron Maléfique.
Man bruker bokstaven L for å angi at et tall er en BigInteger. Skilletegnet _ godtas i litteraler for å gjøre dem mer lesbare:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Konstruktøren BigInteger() lager en BigInteger med verdien 0, og operatoren instanceof lar deg teste typen til en verdi:
var x = BigInteger() debug(x instanceof BigInteger) // true
Merk at et stort tall ikke oppdages automatisk: uten suffikset L blir en litteral som er for stor for en Integer til en Real (med tap av presisjon). Bare suffikset L eller typen big_integer lager en BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real: 1.2344532132423457E56 var b = 1 >> seg som >> (aritmetisk skift: fortegnet bevares). Operatoren / fungerer derimot som på andre tall og returnerer en Real (15L / 4L er 3.75); bare \ utfører heltallsdivisjon (15L \ 4L er 3`). En operasjon med en BigInteger gir som oftest et resultat av typen BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Kostnaden i operasjoner og minne er proporsjonal med størrelsen på operandene – og med produktet av størrelsene til de to operandene for , \, % og *:
var a = 2L * 200_000 // omtrent 1 221 000 operasjoner: resultatet er på 200 001 bit var b = 2L * 200_000_000 // koster nesten ingenting... fordi det krasjer: resultatet ville overstige taket på 1 048 576 bit (OUT_OF_MEMORY)
Svært store tall kuttes for å redusere beregningene og unngå å overfylle visningen (funksjonene binString og hexString viser dem i sin helhet, med en justert kostnad):
debug(1L >> og >>`.
bitCount(0b1101L) er 3;trailingZeros(24L) er 3;signum(-42L) er -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.