BigInt.asIntN()
BigInt.asIntN()
静态方法将 BigInt
值截断到给定的最低有效位数,并将其值作为有符号整数返回。
试一试
语法
js
BigInt.asIntN(bits, bigint)
参数
返回值
bigint
模 2^bits
的值,作为有符号整数。
异常
RangeError
-
如果
bits
为负数或大于 253 - 1,则抛出此异常。
描述
BigInt.asIntN
方法将 BigInt
值截断到给定的位数,并将结果解释为有符号整数。例如,对于 BigInt.asIntN(3, 25n)
,值 25n
将被截断为 1n
25n = 00011001 (base 2) ^=== Use only the three remaining bits ===> 001 (base 2) = 1n
如果剩余数字的最高位为 1
,则结果为负数。例如,BigInt.asIntN(4, 25n)
生成 -7n
,因为 1001
是二进制补码下 -7
的编码。
25n = 00011001 (base 2) ^==== Use only the four remaining bits ===> 1001 (base 2) = -7n
注意:BigInt
值始终以二进制补码形式编码。
与类似的语言 API(如 Number.prototype.toExponential()
)不同,asIntN
是 BigInt
的静态属性,因此您始终将其用作 BigInt.asIntN()
,而不是作为 BigInt 值的方法。将 asIntN()
公开为“标准库函数”允许 与 asm.js 交互。
示例
保持在 64 位范围内
BigInt.asIntN()
方法可用于保持在 64 位算术范围内。
js
const max = 2n ** (64n - 1n) - 1n;
BigInt.asIntN(64, max); // 9223372036854775807n
BigInt.asIntN(64, max + 1n); // -9223372036854775808n
// negative because the 64th bit of 2^63 is 1
规范
规范 |
---|
ECMAScript 语言规范 # sec-bigint.asintn |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。