> LeekScript
BigInteger adalah sebuah tipe LeekScript yang ditambahkan pada pembaruan 2.48. Ini adalah primitif baru yang kompatibel dengan tipe-tipe lain yang sudah ada, dan terutama berguna untuk mempermudah pembuatan dan optimasi bitmap.
BigInteger adalah bilangan bulat yang berperilaku hampir sama seperti Integer, tetapi bisa jauh lebih besar: Integer biasa dibatasi pada 64 bit (263-1), sedangkan BigInteger dapat menampung hingga 1 048 576 bit (220), yaitu sekitar 315 000 digit desimal. Di atas batas ini, perhitungan gagal dengan kesalahan OUT_OF_MEMORY.
Catatan: Tipe ini tidak dimaksudkan untuk menggantikan tipe-tipe yang ada di mana-mana (karena biayanya lebih mahal dalam operasi dan menggunakan lebih banyak memori). Tipe ini tidak berguna untuk memecahkan teka-teki Labu Jahat.
Huruf L digunakan untuk menandai sebuah bilangan sebagai BigInteger. Pemisah _ diterima dalam literal agar lebih mudah dibaca:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
Konstruktor BigInteger() membuat BigInteger bernilai 0, dan operator instanceof memungkinkan pengujian tipe sebuah nilai:
var x = BigInteger() debug(x instanceof BigInteger) // true
Perhatian, bilangan besar tidak terdeteksi secara otomatis: tanpa akhiran L, literal yang terlalu besar untuk Integer menjadi Real (dengan kehilangan presisi). Hanya akhiran L atau tipe big_integer yang membuat BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real : 1.2344532132423457E56 var b = 1 >> berperilaku seperti >> (pergeseran aritmetika: tanda dipertahankan). Operator / bekerja seperti pada bilangan lain dan mengembalikan Real (15L / 4L bernilai 3.75); hanya \ yang melakukan pembagian bilangan bulat (15L \ 4L bernilai 3`). Operasi dengan BigInteger paling sering menghasilkan nilai bertipe BigInteger:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
Biaya dalam operasi dan memori sebanding dengan ukuran operan — dan dengan hasil kali ukuran kedua operan untuk , \, % dan *:
var a = 2L * 200_000 // sekitar 1 221 000 operasi: hasilnya berukuran 200 001 bit var b = 2L * 200_000_000 // hampir tidak ada biayanya... karena crash: hasilnya akan melampaui batas 1 048 576 bit (OUT_OF_MEMORY)
Bilangan yang sangat besar dipotong untuk mengurangi perhitungan dan menghindari tampilan yang penuh (fungsi binString dan hexString menampilkannya secara utuh dengan biaya yang disesuaikan):
debug(1L >> dan >>`.
bitCount(0b1101L) bernilai 3;trailingZeros(24L) bernilai 3;signum(-42L) bernilai -1.Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.