JavaScript BigInt.asIntN() — обрізати число до N біт зі знаком


Статичний метод BigInt.asIntN() обрізає число до заданої кількості біт, трактуючи результат як ціле зі знаком.

автор: NagarD

Загальний опис

Потрібен там, де треба емулювати арифметику мов зі строгими типами — 64-бітний long із Java чи C++.

Таке число має межу, і при переповненні воно загортається в мінус. BigInt сам по собі необмежений, тож щоб відтворити цю поведінку, його обрізають вручну.

Це рівно те, що роблять при розборі двійкових протоколів і при звірянні розрахунків із серверною мовою.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
asIntN 67+ 68+ 14+ 54+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
asIntN 67+ yes yes 14+

Приклади

+ запропонувати свій приклад у пісочниці

Емуляція 64-бітного цілого з переповненням.

const max = 2n ** 63n - 1n; // максимум для 64-бітного зі знаком

console.log(BigInt.asIntN(64, max));      // 9223372036854775807n

// на одиницю більше — переповнення, число «загортається»
console.log(BigInt.asIntN(64, max + 1n)); // -9223372036854775808n

// 8 біт: діапазон від -128 до 127
console.log(BigInt.asIntN(8, 200n)); // -56n
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід