> LeekScript
BigInteger är en typ i LeekScript som lades till i uppdatering 2.48. Det är en ny primitiv typ som är kompatibel med de andra befintliga typerna och som framför allt underlättar skapandet och optimeringen av bitmappar.
En BigInteger är ett heltal som beter sig nästan som en Integer, men som kan vara mycket större: en vanlig Integer är begränsad till 64 bitar (263-1), medan en BigInteger kan rymma upp till 1 048 576 bitar (220), det vill säga ungefär 315 000 decimala siffror. Över det taket misslyckas beräkningen med felet OUT_OF_MEMORY.
Obs: Den här typen är inte tänkt att ersätta de befintliga typerna överallt (eftersom den kostar mer i operationer och använder mer arbetsminne). Den är inte till någon nytta för att lösa gåtan med den Onda pumpan.
Man använder bokstaven L för att ange att ett tal är en BigInteger. Avgränsaren _ accepteras i litteraler för att göra dem mer läsbara:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Konstruktorn BigInteger() skapar en BigInteger med värdet 0, och operatorn instanceof gör det möjligt att testa ett värdes typ:
var x = BigInteger() debug(x instanceof BigInteger) // true
Observera att ett stort tal inte upptäcks automatiskt: utan suffixet L blir en litteral som är för stor för en Integer en Real (med förlust av precision). Bara suffixet L eller typen big_integer skapar en BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real: 1.2344532132423457E56 var b = 1 >> som >> (aritmetiskt skift: tecknet bevaras). Operatorn / fungerar däremot som på andra tal och returnerar en Real (15L / 4L är 3.75); bara \ utför heltalsdivision (15L \ 4L är 3`). En operation med en BigInteger ger oftast ett resultat av typen BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Kostnaden i operationer och minne är proportionell mot operandernas storlek — och mot produkten av de två operandernas storlekar för , \, % och *:
var a = 2L * 200_000 // ungefär 1 221 000 operationer: resultatet är 200 001 bitar var b = 2L * 200_000_000 // kostar nästan ingenting... eftersom det kraschar: resultatet skulle överskrida taket på 1 048 576 bitar (OUT_OF_MEMORY)
Mycket stora tal klipps av för att minska beräkningarna och undvika att fylla utskriften (funktionerna binString och hexString visar dem i sin helhet, med en anpassad kostnad):
debug(1L >> och >>`.
bitCount(0b1101L) är 3;trailingZeros(24L) är 3;signum(-42L) är -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.