我目前正在学习JavaScript,我很惊讶没有内置的方式来处理二进制数。我必须处理高达2^4096的整数,所以我不能在我的微积分中使用JS整数。
我的第一个想法是使用1和0的数组。但这并不令人满意,因为简单的乘2需要移动整个表。
那么,如何在JavaScript中有效地处理二进制数呢?
我不想使用任何图书馆。我感兴趣的是它是如何工作的,而不是使用他人的抽象。
发布于 2013-10-12 08:55:08
Javascript没有任何biginteger类型,因此需要使用数组来保存这些信息。
值为0和1的数组将使实现函数变得容易,但效率不高。
Javascript中的常规数字是一个双精度浮点数,因此它可以容纳52位的数字信息(参考文献),但是您可以使用稍微少一点的方法来远离任何舍入错误,例如48位。
Javascript中的位运算符与32位整数一起工作,也就是说,在与位运算符一起使用时,double被转换为32位整数。如果要对数据使用按位运算符,可以选择在数组中存储每项32位。
发布于 2013-10-12 08:59:40
JavaScript只支持53位整数。
存储“大整数”的最佳方法是将它们转换为服务器端的字符串。如果你想操纵它们,我建议你看看这个库https://github.com/rauschma/strint
https://stackoverflow.com/questions/19336620
复制