> LeekScript
BigInteger 是 LeekScript 在 2.48 更新中新增的一种类型。它是一种新的基本类型,与其他现有类型兼容,特别有助于创建和优化位图。
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.