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
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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