我正在寻找一种在JavaScript中对64位整数执行按位AND的方法.
JavaScript会将其所有双精度值转换为带符号的32位整数,以执行按位运算(详情请参见此处).
在其他可以代表64位整数的语言中,可以很容易地做到这一点......
// convert 64-bit n to two 32-bit x and y
x = (n & 0xFFFFFFFF00000000) >> 32
y = n & 0xFFFFFFFF
Run Code Online (Sandbox Code Playgroud)
但JavaScript不能代表64位整数.它只能代表52位整数而不会出现问题.
现在这意味着无法将64位整数转换为两个32位整数,因为它甚至不可能首先具有64位整数.
但是,我们还有52位.我的问题是:如何在JavaScript中将这个52位整数分成两个32位整数(20个高位和32个低位)
有人建议像上面的位操作代码在JavaScript中进行20位和32位拆分吗?
给定64位数字,我需要从中提取每一位,并将其转换为数字:
decimal: 357
binary: 0000 0001 0110 0101
odd bits: 0 0 0 1 1 0 1 1
decimal: 27
Run Code Online (Sandbox Code Playgroud)
有没有想过一个好的算法方法呢?不,不是HW,这是真实的世界使用:)