BigInt.asUintN()
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.
TheBigInt.asUintN() static method truncates aBigInt value to the given number of least significant bits and returns that value as an unsigned integer.
In this article
Try it
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));// 1nconsole.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)Parameters
Return value
The value ofbigint modulo2 ** bits, as an unsigned integer.
Exceptions
RangeErrorThrown if
bitsis negative or greater than 253 - 1.
Description
TheBigInt.asUintN method truncates aBigInt value to the given number of bits, and interprets the result as an unsigned integer. Unsigned integers have no sign bits and are always non-negative. For example, forBigInt.asUintN(4, 25n), the value25n is truncated to9n:
25n = 00011001 (base 2) ^==== Use only the four remaining bits===> 1001 (base 2) = 9n
Note:BigInt values are always encoded as two's complement in binary.
Unlike similar language APIs such asNumber.prototype.toExponential(),asUintN is a static property ofBigInt, so you always use it asBigInt.asUintN(), rather than as a method of a BigInt value. ExposingasUintN() as a "standard library function" allowsinterop with asm.js.
Examples
>Staying in 64-bit ranges
TheBigInt.asUintN() method can be useful to stay in the range of 64-bit arithmetic.
const max = 2n ** 64n - 1n;BigInt.asUintN(64, max); // 18446744073709551615nBigInt.asUintN(64, max + 1n); // 0n// zero because of overflow: the lowest 64 bits are all zerosSpecifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-bigint.asuintn> |