JavaScript Moltiplicazione o divisione più rapida con poteri di 2

Esempio

I bit di spostamento a sinistra (a destra) equivale a moltiplicare (dividendo) per 2. È lo stesso nella base 10: se "spostiamo a sinistra" 13 di 2 posizioni, otteniamo 1300 o 13 * (10 ** 2) . E se prendiamo 12345 e "right-shift" di 3 posizioni e quindi rimuoviamo la parte decimale, otteniamo 12 o Math.floor(12345 / (10 ** 3)) . Quindi se vogliamo moltiplicare una variabile per 2 ** n , possiamo spostarci a sinistra di n bit.

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

Allo stesso modo, per eseguire la divisione intera (floored) di 2 ** n , possiamo spostare a destra di n bit. Esempio:

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

Funziona anche con numeri negativi:

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

In realtà, è improbabile che la velocità dell'aritmetica abbia un impatto significativo sul tempo di esecuzione del codice, a meno che non si stia eseguendo l'ordine di centinaia di milioni di calcoli. Ma i programmatori C adorano questo genere di cose!