根据我的理解,JS在执行位移操作时将数字视为32位,即使它支持64位数字。
如何实现适用于64位数字的leftShift
函数?也就是说,它不会卷入192 << 24
之类的否定内容(应为3221225472
,而不是-1073741824
)。
答案 0 :(得分:6)
只需做left shift的数学运算:
算术移位相当于乘以正(向左)或负数(向右),基数的积分幂(例如乘以二进制数的2的幂)。
function shift(number, shift) {
return number * Math.pow(2, shift);
}
shift(192, 24)
//3221225472
shift(3221225472, -24)
//192