如何左移大于32位的数字?

时间:2015-10-14 23:43:19

标签: javascript operators bit-shift

根据我的理解,JS在执行位移操作时将数字视为32位,即使它支持64位数字。

如何实现适用于64位数字的leftShift函数?也就是说,它不会卷入192 << 24之类的否定内容(应为3221225472,而不是-1073741824)。

1 个答案:

答案 0 :(得分:6)

只需做left shift的数学运算:

  

算术移位相当于乘以正(向左)或负数(向右),基数的积分幂(例如乘以二进制数的2的幂)。

function shift(number, shift) {
    return number * Math.pow(2, shift);
}

shift(192, 24)
//3221225472

shift(3221225472, -24)
//192