JavaScript BigInt.asIntN() — обрізати число до N біт зі знаком
Статичний метод BigInt.asIntN() обрізає число до заданої кількості біт, трактуючи результат як ціле зі знаком.
Загальний опис
Потрібен там, де треба емулювати арифметику мов зі строгими типами — 64-бітний long із Java чи C++.
Таке число має межу, і при переповненні воно загортається в мінус. BigInt сам по собі необмежений, тож щоб відтворити цю поведінку, його обрізають вручну.
Це рівно те, що роблять при розборі двійкових протоколів і при звірянні розрахунків із серверною мовою.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| asIntN | 67+ | 68+ | 14+ | 54+ | 79+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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
Коментарі
Коментарів ще немає — будьте першим!