【问题标题】:What is the best way to store very large binary numbers in JavaScript?在 JavaScript 中存储非常大的二进制数的最佳方法是什么?
【发布时间】:2013-10-20 14:59:30
【问题描述】:

我目前正在学习 JavaScript,我很惊讶没有内置的方法来处理二进制数。我必须使用高达 2^4096 的整数,所以我不能将 JS 整数用于我的微积分。

我的第一个想法是使用 1 和 0 的数组。但这并不令人满意,因为简单的乘以 2 需要移动整个表。

那么如何在 JavaScript 中高效地处理二进制数呢?

我不想使用任何库。我感兴趣的是它是如何工作的,而不是使用别人的抽象。

【问题讨论】:

  • @T.J.Crowder 这些可用于整数,但据我所知整数不能超过 2^64
  • @Barmar 我不是在找图书馆。
  • 如果你想知道它是如何工作的,请阅读库的源代码。
  • “我很惊讶没有内置的方法来处理二进制数”。没有内置方法可以处理大于 32 位的二进制数,这并不罕见(尤其是在创建 JavaScript 时并不罕见)。

标签: javascript binary biginteger bitarray


【解决方案1】:

Javascript 没有任何大整数类型,因此您需要使用数组来保存这么多信息。

0 和 1 值的数组可以很容易地为它实现功能,但效率不高。

Javascript 中的常规数字是双精度浮点数,因此它可以保存 52 位数字信息(ref),但您可以使用稍微少一点的值来避免任何舍入错误,例如 48 位。

Javascript 中的位运算符使用 32 位整数,即当与位运算符一起使用时,双精度数转换为 32 位整数。如果您想对数据使用按位运算符,您可以选择在数组中每个项目存储 32 位。

【讨论】:

    【解决方案2】:

    JavaScript 仅支持 53 位整数。

    存储“大整数”的最佳方式是在服务器端将它们转换为字符串。如果您想操纵它们,我建议您查看此库https://github.com/rauschma/strint

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2011-07-28
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多