BigInt.asIntN()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.
Phương thức tĩnh BigInt.asIntN() cắt ngắn giá trị BigInt xuống số bit ít quan trọng nhất đã cho và trả về giá trị đó như một số nguyên có dấu.
Try it
const I64_CEIL = 2n ** 63n;
console.log(BigInt.asIntN(64, I64_CEIL - 1n));
// 9223372036854775807n (2n ** 64n - 1n, the maximum non-wrapping value)
console.log(BigInt.asIntN(64, I64_CEIL));
// -9223372036854775808n (wraps to min value)
console.log(BigInt.asIntN(64, I64_CEIL + 1n));
// -9223372036854775807n (min value + 1n)
console.log(BigInt.asIntN(64, I64_CEIL * 2n));
// 0n (wrapped around to zero)
console.log(BigInt.asIntN(64, -I64_CEIL * -42n));
// 0n (also wraps on negative multiples)
Cú pháp
BigInt.asIntN(bits, bigint)
Tham số
Giá trị trả về
Giá trị của bigint modulo 2 ** bits, như một số nguyên có dấu.
Ngoại lệ
RangeError-
Được ném nếu
bitslà âm hoặc lớn hơn 253 - 1.
Mô tả
Phương thức BigInt.asIntN cắt ngắn giá trị BigInt xuống số bit đã cho, và diễn giải kết quả như một số nguyên có dấu. Ví dụ, đối với BigInt.asIntN(3, 25n), giá trị 25n được cắt ngắn thành 1n:
25n = 00011001 (base 2)
^=== Use only the three remaining bits
===> 001 (base 2) = 1n
Nếu bit đầu của số còn lại là 1, kết quả là âm. Ví dụ, BigInt.asIntN(4, 25n) cho ra -7n, vì 1001 là mã hóa của -7 trong biểu diễn bù hai:
25n = 00011001 (base 2)
^==== Use only the four remaining bits
===> 1001 (base 2) = -7n
Note:
Các giá trị BigInt luôn được mã hóa dưới dạng bù hai trong hệ nhị phân.
Không giống như các API ngôn ngữ tương tự như Number.prototype.toExponential(), asIntN là thuộc tính tĩnh của BigInt, vì vậy bạn luôn dùng nó như BigInt.asIntN(), thay vì là phương thức của giá trị BigInt. Hiển thị asIntN() như "hàm thư viện chuẩn" cho phép tương tác với asm.js.
Ví dụ
>Giữ trong phạm vi 64-bit
Phương thức BigInt.asIntN() có thể hữu ích để giữ trong phạm vi số học 64-bit.
const max = 2n ** (64n - 1n) - 1n;
BigInt.asIntN(64, max); // 9223372036854775807n
BigInt.asIntN(64, max + 1n); // -9223372036854775808n
// âm vì bit thứ 64 của 2^63 là 1
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-bigint.asintn> |