更快的乘法或除以 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 程式設計師喜歡這種東西!