> LeekScript
BigInteger on LeekScriptin tyyppi, joka lisättiin päivityksessä 2.48. Kyseessä on uusi primitiivityyppi, joka on yhteensopiva muiden olemassa olevien tyyppien kanssa ja jonka tarkoitus on erityisesti helpottaa bittikarttojen luomista ja optimointia.
BigInteger on kokonaisluku, joka käyttäytyy lähes kuten Integer, mutta voi olla paljon suurempi: tavallinen Integer on rajoitettu 64 bittiin (263-1), kun taas BigInteger voi sisältää jopa 1 048 576 bittiä (220) eli noin 315 000 desimaalinumeroa. Tämän ylärajan ylittyessä laskenta epäonnistuu virheeseen OUT_OF_MEMORY.
Huomautus: Tämän tyypin ei ole tarkoitus korvata olemassa olevia tyyppejä kaikkialla (koska se maksaa enemmän operaatioina ja käyttää enemmän muistia). Siitä ei ole hyötyä Pahan kurpitsan arvoituksen ratkaisemisessa.
Kirjaimella L merkitään luku BigInteger-tyyppiseksi. Literaaleissa hyväksytään erotin _, joka tekee niistä luettavampia:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Konstruktori BigInteger() luo BigIntegerin, jonka arvo on 0, ja operaattorilla instanceof voi testata arvon tyypin:
var x = BigInteger() debug(x instanceof BigInteger) // true
Huomaa, että suurta lukua ei tunnisteta automaattisesti: ilman L-päätettä Integer-tyypille liian suuresta literaalista tulee Real (tarkkuuden menetyksellä). Vain L-pääte tai tyyppi big_integer luovat BigIntegerin:
var a = 123445321324234567895431235648945674894561564523489756489 // Real: 1.2344532132423457E56 var b = 1 >> käyttäytyy kuten >> (aritmeettinen siirto: etumerkki säilyy). Operaattori / puolestaan toimii kuten muillakin luvuilla ja palauttaa Real-arvon (15L / 4L on 3.75); vain \ suorittaa kokonaislukujaon (15L \ 4L on 3`). BigInteger-arvon sisältävä operaatio antaa useimmiten tulokseksi BigInteger-tyyppisen arvon:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Kustannus operaatioina ja muistina on verrannollinen operandien kokoon — ja operaattoreilla , \, % ja * kummankin operandin kokojen tuloon:
var a = 2L * 200_000 // noin 1 221 000 operaatiota: tulos on 200 001 bittiä pitkä var b = 2L * 200_000_000 // ei maksa juuri mitään... koska se kaatuu: tulos ylittäisi 1 048 576 bitin ylärajan (OUT_OF_MEMORY)
Hyvin suuret luvut katkaistaan laskennan vähentämiseksi ja näytön tukkeutumisen välttämiseksi (funktiot binString ja hexString näyttävät ne kokonaan sovitetulla kustannuksella):
debug(1L >> ja >>`.
bitCount(0b1101L) on 3;trailingZeros(24L) on 3;signum(-42L) on -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.