> LeekScript
BigInteger er en type i LeekScript, som blev tilføjet i opdatering 2.48. Det er en ny primitiv type, der er kompatibel med de andre eksisterende typer, og som især gør det lettere at oprette og optimere bitmaps.
En BigInteger er et heltal, der opfører sig næsten som en Integer, men kan være meget større: en almindelig Integer er begrænset til 64 bit (263-1), mens en BigInteger kan rumme op til 1 048 576 bit (220), altså cirka 315 000 decimale cifre. Over dette loft fejler beregningen med fejlen OUT_OF_MEMORY.
Bemærk: Denne type er ikke tænkt som en erstatning for de eksisterende typer overalt (da den koster mere i operationer og bruger mere hukommelse). Den er ikke nyttig til at løse gåden om Potiron Maléfique.
Man bruger bogstavet L til at angive et tal som BigInteger. Separatoren _ accepteres i litteraler for at gøre dem mere læselige:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Konstruktøren BigInteger() opretter en BigInteger med værdien 0, og operatoren instanceof gør det muligt at teste en værdis type:
var x = BigInteger() debug(x instanceof BigInteger) // true
Pas på: et stort tal registreres ikke automatisk: uden suffikset L bliver en litteral, der er for stor til en Integer, til en Real (med tab af præcision). Kun suffikset L eller typen big_integer opretter en BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real: 1.2344532132423457E56 var b = 1 >> sig som >> (aritmetisk skift: fortegnet bevares). Operatoren / fungerer derimod som på de andre tal og returnerer en Real (15L / 4L er 3.75); kun \ udfører heltalsdivision (15L \ 4L er 3`). En operation med en BigInteger giver som oftest et resultat af typen BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Omkostningen i operationer og hukommelse er proportional med operandernes størrelse — og med produktet af de to operanders størrelser for , \, % og *:
var a = 2L * 200_000 // cirka 1 221 000 operationer: resultatet fylder 200 001 bit var b = 2L * 200_000_000 // koster næsten ingenting ... fordi det går ned: resultatet ville overstige loftet på 1 048 576 bit (OUT_OF_MEMORY)
Meget store tal afkortes for at reducere beregningerne og undgå at overfylde visningen (funktionerne binString og hexString viser dem i fuld længde med en tilpasset omkostning):
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.