> LeekScript
BigInteger 是 LeekScript 在 2.48 版更新中加入的一种类型。它是一种新的基本类型,与现有的其他类型兼容,主要用来简化位图(bitmap)的创建和优化。
BigInteger 是一种整数,它的行为和 Integer 几乎一样,但可以大得多:普通的 Integer 最多只有 64 位(263-1),而 BigInteger 最多可以容纳 1 048 576 位(220),约合 315 000 位十进制数字。超出这个上限,计算就会失败,并报 OUT_OF_MEMORY 错误。
注意:这个类型并不是要全面取代现有的类型(因为它消耗更多操作数,也占用更多内存)。解开邪恶南瓜之谜也用不到它。
在数字后面加上字母 L,就表示它是一个 BigInteger。字面量中可以使用分隔符 _,让数字更易读:
var a = 1L var b = 0b111L big_integer c = 5 big_integer d = -3L var e = 1_000_000L
构造函数 BigInteger() 会创建一个值为 0 的 BigInteger,运算符 instanceof 可以用来检测一个值的类型:
var x = BigInteger() debug(x instanceof BigInteger) // true
注意,大数字不会被自动识别:如果没有后缀 L,超出 Integer 范围的字面量会变成 Real(并损失精度)。只有后缀 L 或 big_integer 类型才会创建 BigInteger:
var a = 123445321324234567895431235648945674894561564523489756489 // Real : 1.2344532132423457E56 var b = 1 >> 的行为与 >> 相同(算术移位:保留符号)。而运算符 / 和用于其他数字时一样,返回 Real(15L / 4L 等于 3.75);只有 \ 执行整数除法(15L \ 4L 等于 3`)。 含有 BigInteger 的运算,结果通常也是 BigInteger 类型:
var a = 5.0 + 5L // BigInteger var b = 123456789123456789L % 234567 // BigInteger
操作数和内存的消耗与运算数的大小成正比;对于 、\、% 和 *,则与两个运算数大小的乘积成正比:
var a = 2L * 200_000 // 约 1 221 000 操作数:结果有 200 001 位 var b = 2L * 200_000_000 // 几乎没有消耗……因为它直接崩溃了:结果会超过 1 048 576 位的上限(OUT_OF_MEMORY)
非常大的数字在显示时会被截断,以减少计算量,也避免显示内容过长(函数 binString 和 hexString 可以完整显示它,消耗也会相应调整):
debug(1L >> 和 >>` 更少。
bitCount(0b1101L) 等于 3;trailingZeros(24L) 等于 3;signum(-42L) 等于 -1。Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.