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.

Die statische Methode BigInt.asIntN() kürzt einen BigInt-Wert auf die angegebene Anzahl der niederwertigsten Bits und gibt diesen Wert als vorzeichenbehaftete ganze Zahl zurück.

Probieren Sie es aus

Syntax

js
BigInt.asIntN(bits, bigint)

Parameter

bits

Die Anzahl der Bits, die für das zurückgegebene BigInt verfügbar sind. Sollte eine ganze Zahl zwischen 0 und 253 - 1 (einschließlich) sein.

bigint

Der BigInt-Wert, der gekürzt wird, um in die angegebenen Bits zu passen.

Rückgabewert

Der Wert von bigint modulo 2^bits, als vorzeichenbehaftete ganze Zahl.

Ausnahmen

RangeError

Wird ausgelöst, wenn bits negativ 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 ganze Zahl. Zum Beispiel 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, weil 1001 die zweier-Komplement-Darstellung von -7 ist:

25n = 00011001 (base 2)
         ^==== Use only the four remaining bits
===>      1001 (base 2) = -7n

Note: BigInt-Werte werden immer als zweier-Komplement im Binärsystem kodiert.

Im Gegensatz zu ähnlichen API-Funktionen in anderen Sprachen wie Number.prototype.toExponential() ist asIntN eine statische Eigenschaft von BigInt, sodass Sie sie immer als BigInt.asIntN() verwenden, anstatt als Methode eines BigInt-Werts. Die Bereitstellung von asIntN() als "Standardbibliotheksfunktion" ermöglicht die Interoperabilität mit asm.js.

Beispiele

Im 64-Bit-Bereich bleiben

Die Methode BigInt.asIntN() kann nützlich sein, um im Bereich der 64-Bit-Arithmetik zu bleiben.

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

Spezifikationen

Specification
ECMAScript Language Specification
# sec-bigint.asintn

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch