更快的乘法或除以 2 的幂

左移(右)相当于乘以(除)2.它在基数 10 中是相同的:如果我们通过 2 位置左移13,我们得到 130013 * (10 ** 2)。如果我们取 12345 并通过 3 位置右移然后删除小数部分,我们得到 12Math.floor(12345 / (10 ** 3))。因此,如果我们想要将变量乘以 2 ** n,我们可以通过 n 位左移。

console.log(13 * (2 ** 6)) //13 * 64 = 832
console.log(13    <<   6)  //          832

类似地,要通过 2 ** n 进行(覆盖)整数除法,我们可以通过 n 位右移。例:

console.log(1000 / (2 ** 4)) //1000 / 16 = 62.5
console.log(1000    >>   4)  //            62

它甚至适用于负数:

console.log(-80 / (2 ** 3)) //-80 / 8 = -10
console.log(-80      >> 3)  //          -10

实际上,算术速度不太可能显着影响代码运行所需的时间,除非你正在进行大约 100 万次计算。但 C 程序员喜欢这种东西!