BigInt.asIntN()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2020 browserübergreifend verfügbar.
Die statische Methode BigInt.asIntN() kürzt einen BigInt-Wert auf die angegebene Anzahl der am wenigsten signifikanten Bits und gibt diesen Wert als vorzeichenbehaftete Ganzzahl zurück.
Probieren Sie es aus
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)
Syntax
BigInt.asIntN(bits, bigint)
Parameter
Rückgabewert
Ein BigInt, der die Bit-Darstellung von bigint enthält, gekürzt auf bits Bits, interpretiert als vorzeichenbehaftete Ganzzahl.
Ausnahmen
RangeError-
Wird ausgelöst, wenn
bitsnegativ oder größer als 253 - 1 ist.
Beschreibung
Die Methode BigInt.asIntN kürzt einen BigInt-Wert auf die angegebene Anzahl von Bits und interpretiert das Ergebnis als vorzeichenbehaftete Ganzzahl. Beispielsweise wird bei BigInt.asIntN(3, 25n) der Wert 25n auf 1n gekürzt:
25n = 00011001 (base 2)
^=== Use only the three remaining bits
===> 001 (base 2) = 1n
Wenn das führende Bit der verbleibenden Zahl 1 ist, ist das Ergebnis negativ. Zum Beispiel ergibt BigInt.asIntN(4, 25n) -7n, da 1001 die Codierung von -7 im Zweierkomplement darstellt:
25n = 00011001 (base 2)
^==== Use only the four remaining bits
===> 1001 (base 2) = -7n
Hinweis:
BigInt-Werte sind immer im Zweierkomplement in Binär codiert.
Im Gegensatz zu ähnlichen APIs in anderen Sprachen wie Number.prototype.toExponential() ist asIntN eine statische Eigenschaft von BigInt, daher verwenden Sie sie immer als BigInt.asIntN() und nicht als Methode eines BigInt-Wertes. Die Bereitstellung von asIntN() als "Standardbibliotheksfunktion" ermöglicht die Interoperabilität mit asm.js.
Beispiele
>Im Bereich von 64-Bit bleiben
Die Methode BigInt.asIntN() kann nützlich sein, um im Bereich der 64-Bit-Arithmetik zu bleiben.
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
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-bigint.asintn> |