如何获得BigInt的位数?

时间:2019-02-19 02:43:58

标签: javascript biginteger

没有herehere记载的bitLength()方法...如何检查本机BigInt值的位数?

我正在通过一些内部信息寻找一种“直接方法” ...或者总是更快x.toString(2)进行转换的任何方法。


笔记

  • 这不是理想的方法,但是一种中间解决方法(似乎比toString()更快)是使用this mathematical formula based on log2(x) ...适应BigInt。

  • This lib开发了特定的integerLogarithm(value, base)来计算log2 ...并实现了bitLength()方法(没有Math.floor()哼...),但是很多依赖,这是一头大象...

1 个答案:

答案 0 :(得分:-1)

这是一种怪诞(但很简单)的方法,将其转换为字符串:

num.toString(2).length;

const x = 324298349892398423892439832498423989842394839842398432243234243942738742378942379824739879842379437942379423792437742397942379824379842397824312n;

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

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

console.log(bits);