【发布时间】:2014-10-17 17:48:16
【问题描述】:
我想对一些较大的值进行按位运算:
var someVariable = 4;
someVariable |= 36028797018963968; // add flag, 1 << 55
但是,结果总是以4 而不是36028797018963972 结束。经过一番研究,我遇到了this answer,它指出 Javascript 在进行按位运算时会将数字转换为 32 位表示,这就解释了为什么我可能会遇到这个问题,但我该如何解决呢?经过更多研究,我遇到了一些 Javascript bigint 库,但如果可能的话,我想在没有库的情况下这样做。如何在 Javascript 中对大数执行按位运算?
【问题讨论】:
-
即使你的
36028797018963968也没有真正工作,如果你执行console.log(36028797018963968),也不会显示出来,因为它高于js的int限制。根据您需要的操作,需要使用字符串或大型 int 库进行管理
标签: javascript