BigInt.asUintN()
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.asUintN() kürzt einen BigInt-Wert auf die angegebene Anzahl der am wenigsten signifikanten Bits und gibt diesen Wert als vorzeichenlose Ganzzahl zurück.
Probieren Sie es aus
const U64_CEIL = 2n ** 64n;
console.log(BigInt.asUintN(64, U64_CEIL - 1n));
// 18446744073709551615n (2n ** 64n - 1n, the maximum non-wrapping value)
console.log(BigInt.asUintN(64, U64_CEIL));
// 0n (wraps to zero)
console.log(BigInt.asUintN(64, U64_CEIL + 1n));
// 1n
console.log(BigInt.asUintN(64, U64_CEIL * 2n));
// 0n (wraps on multiples)
console.log(BigInt.asUintN(64, U64_CEIL * -42n));
// 0n (also wraps on negative multiples)
Syntax
BigInt.asUintN(bits, bigint)
Parameter
Rückgabewert
Ein BigInt, das die Bitdarstellung von bigint, gekürzt auf bits Bits, enthält und als vorzeichenlose Ganzzahl interpretiert wird.
Ausnahmen
RangeError-
Wird ausgelöst, wenn
bitsnegativ oder größer als 253 - 1 ist.
Beschreibung
Die Methode BigInt.asUintN kürzt einen BigInt-Wert auf die angegebene Anzahl von Bits und interpretiert das Ergebnis als vorzeichenlose Ganzzahl. Vorzeichenlose Ganzzahlen haben keine Vorzeichenbits und sind immer nicht negativ. Zum Beispiel wird bei BigInt.asUintN(4, 25n) der Wert 25n auf 9n gekürzt:
25n = 00011001 (base 2)
^==== Use only the four remaining bits
===> 1001 (base 2) = 9n
Hinweis:
BigInt-Werte werden immer als Zweierkomplement im Binärformat codiert.
Im Gegensatz zu ähnlichen API-Funktionen in anderen Sprachen, wie Number.prototype.toExponential(), ist asUintN eine statische Eigenschaft von BigInt, daher wird sie immer als BigInt.asUintN() verwendet und nicht als Methode eines BigInt-Werts. Die Bereitstellung von asUintN() als "Funktion der Standardbibliothek" ermöglicht die Interoperabilität mit asm.js.
Beispiele
>Im 64-Bit-Bereich bleiben
Die Methode BigInt.asUintN() kann nützlich sein, um im Bereich der 64-Bit-Arithmetik zu bleiben.
const max = 2n ** 64n - 1n;
BigInt.asUintN(64, max); // 18446744073709551615n
BigInt.asUintN(64, max + 1n); // 0n
// zero because of overflow: the lowest 64 bits are all zeros
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-bigint.asuintn> |