Spec-Zone.ru › JavaScript

BigInt.asIntN()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2020 года.

Статический метод BigInt.asIntN() усекает значение BigInt до заданного количества младших значащих бит и возвращает это значение как знаковое целое число.

Попробуйте

const I64_CEIL = 2n ** 63n;

console.log(BigInt.asIntN(64, I64_CEIL - 1n));
// 9223372036854775807n (2n ** 64n - 1n, the maximum non-wrapping value)
console.log(BigInt.asIntN(64, I64_CEIL));
// -9223372036854775808n (wraps to min value)
console.log(BigInt.asIntN(64, I64_CEIL + 1n));
// -9223372036854775807n (min value + 1n)
console.log(BigInt.asIntN(64, I64_CEIL * 2n));
// 0n (wrapped around to zero)
console.log(BigInt.asIntN(64, -I64_CEIL * -42n));
// 0n (also wraps on negative multiples)

Синтаксис

BigInt.asIntN(bits, bigint)

Параметры

bits
Количество бит, доступных для возвращаемого BigInt. Должно быть целым числом от 0 до 253 - 1 включительно.
bigint
Значение BigInt для усечения, чтобы оно соответствовало предоставленным битам.

Возвращаемое значение

BigInt, содержащий битовое представление bigint, усеченное до bits бит, интерпретируемое как знаковое целое число.

Исключения

RangeError
Выбрасывается, если bits отрицательный или больше 253 - 1.

Описание

Метод BigInt.asIntN усекает значение BigInt до заданного количества бит и интерпретирует результат как знаковое целое число. Например, для BigInt.asIntN(3, 25n) значение 25n усекается до 1n:

25n = 00011001 (base 2)
          ^=== Use only the three remaining bits
===>       001 (base 2) = 1n

Если старший бит оставшегося числа 1, результат будет отрицательным. Например, BigInt.asIntN(4, 25n) дает -7n, потому что 1001 является кодировкой -7 в дополнительном коде:

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

Примечание: Значения BigInt всегда кодируются в двоичной форме в дополнительном коде.

В отличие от аналогичных API языка, таких как Number.prototype.toExponential(), asIntN является статическим свойством BigInt, поэтому вы всегда используете его как BigInt.asIntN(), а не как метод значения BigInt. Предоставление asIntN() в качестве "функции стандартной библиотеки" позволяет взаимодействовать с asm.js.

Примеры

Оставаться в 64-битных диапазонах

Метод BigInt.asIntN() может быть полезен для сохранения в диапазоне 64-битной арифметики.

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-bigint.asintn

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
asIntN
67
79
68
54
14
67
68
48
14
9.0
67
14
1.0.0
1.0
10.4.0

См. также

  • BigInt
  • BigInt.asUintN()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asIntN

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API