移位運算就是對二進制進行有規律低移位。移位運算可以設計很多奇妙的效果,在圖形圖像編程中應用廣泛。
“<<”運算符
“<<”運算符執行左移位運算。在移位運算過程中,符號位始終保持不變。如果右側空出位置,則自動填充為 0;超出 32 位的值,則自動丟棄。
把數字 5 向左移動 2 位,則返回值為 20。
console.log(5 << 2); //返回值20
“>>”運算符
“>>”運算符執行有符號右移位運算。與左移運算操作相反,它把 32 位數字中的所有有效位整體右移,再使用符號位的值填充空位。移動過程中超出的值將被丟棄。
把數值 1000 向右移 8 位,則返回值為 3。
console.log(1000 >> 8); //返回值3
把數值 -1000 向右移 8 位,則返回值為 -4。
console.log(-1000 >> 8); //返回值 -4
“>>>”運算符
“>>>”運算符執行五符號右移位運算。它把無符號的 32 位整數所有數位整體右移。對於無符號數或正數右移運算,無符號右移與有符號右移運算的結果是相同的。
下面兩行表達式的返回值是相同的。
console.log(1000 >> 8); //返回值3
console.log(1000 >> 8); //返回值3
對於負數來說,無符號右移將使用 0 來填充所有的空位,同時會把負數作為正數來處理,所得結果會非常大所以,使用無符號右移運算符時要特別小心,避免意外錯誤。
console.log(-1000 >> 8); //返回值 -4
console.log(-1000 >>> 8); //返回值 16777212