更快的乘法或除以 2 的冪
左移(右)相當於乘以(除)2.它在基數 10 中是相同的:如果我們通過 2
位置左移13
,我們得到 1300
或 13 * (10 ** 2)
。如果我們取 12345
並通過 3
位置右移然後刪除小數部分,我們得到 12
或 Math.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 程式設計師喜歡這種東西!