---
hide_title: false
hide_table_of_contents: false
pagination_next: null
pagination_prev: null
---
# BigInt.asIntN()

The **`BigInt.asIntN`** static method clamps a `BigInt` value to the given number of bits, and returns that value as a signed integer.

## Syntax

```js
BigInt.asIntN(bits, bigint)
```

### Parameters

- `bits`
  - : The amount of bits available for the returned BigInt. Should be an integer between 0 and 2<sup>53</sup> - 1, inclusive.
- `bigint`
  - : The BigInt value to clamp to fit into the supplied bits.

### Return value

The value of `bigint` modulo 2^`bits`, as a signed integer.

### Exceptions

- [`RangeError`](../../globals/RangeError/RangeError.mdx)
  - : Thrown if `bits` is negative or greater than 2<sup>53</sup> - 1.

## Description

The `BigInt.asIntN` method clamps a `BigInt` value to the given number of bits, and interprets the result as a signed integer. For example, for `BigInt.asIntN(3, 25n)`, the value `25n` is clamped to `1n`:

```plain
25n = 00011001 (base 2)
          ^=== Clamp to three remaining bits
===>       001 (base 2) = 1n
```

If the leading bit of the remaining number is `1`, the result is negative. For example, `BigInt.asIntN(4, 25n)` yields `-7n`, because `1001` is the encoding of `-7` under two's complement:

```plain
25n = 00011001 (base 2)
         ^==== Clamp to four remaining bits
===>      1001 (base 2) = -7n
```

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

Unlike similar language APIs such as [`Number.prototype.toExponential()`](../Number/prototype/toExponential.mdx), `asIntN` is a static property of `BigInt`, so you always use it as `BigInt.asIntN()`, rather than as a method of a BigInt value. Exposing `asIntN()` as a "standard library function" allows [interop with asm.js](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs).
