The BigInt.asUintN static method clamps a BigInt value to the given number of bits, and returns that value as an unsigned integer.

Try it


BigInt.asUintN(bits, bigint)



The amount of bits available for the returned BigInt. Should be an integer between 0 and 253 - 1, inclusive.


The BigInt value to clamp to fit into the supplied bits.

Return value

The value of bigint modulo 2^bits, as an unsigned integer.



Thrown if bits is negative or greater than 253 - 1.


The BigInt.asUintN method clamps a BigInt 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, for BigInt.asUintN(4, 25n), the value 25n is clamped to 9n:

25n = 00011001 (base 2)
         ^==== Clamp to four remaining bits
===>      1001 (base 2) = 9n

Note: BigInt values are always encoded as two's complement in binary.

Unlike similar language APIs such as Number.prototype.toExponential(), asUintN is a static property of BigInt, so you always use it as BigInt.asUintN(), rather than as a method of a BigInt value. Exposing asUintN() as a "standard library function" allows interop with asm.js.


Staying in 64-bit ranges

The BigInt.asUintN() method can be useful to stay in the range of 64-bit arithmetic.

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


ECMAScript Language Specification
# sec-bigint.asuintn

Browser compatibility

BCD tables only load in the browser

See also