Как получить количество бит BigInt? - PullRequest
0 голосов
/ 19 февраля 2019

Методы bitLength() не задокументированы здесь или здесь ... Как проверить количество бит собственного значения BigInt?

Я ищу "прямой путь", по какой-то внутренней информации ... Или что-нибудь более быстрое, что они всегда конвертируют x.toString(2).


Примечания

  • Не идеально, но промежуточный обходной путь (кажется, быстрее toString()) заключается в использовании этой математической формулы, основанной на log2 (x) ... Адаптировано к BigInt.

  • Эта библиотека разработала специальный integerLogarithm(value, base) для вычисления log2 ... и реализации метода bitLength() (без Math.floor() гуд ...),но с множеством зависимостей, это слон ...

1 Ответ

0 голосов
/ 19 февраля 2019

Вот хакерский (но простой) способ, преобразовать его в строку:

num.toString(2).length;

const x = 324298349892398423892439832498423989842394839842398432243234243942738742378942379824739879842379437942379423792437742397942379824379842397824312n;

console.log(x.toString(2));

const bits = x.toString(2).length;

console.log(bits);
...