1. <<
左移,即按二進制形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。
數學意義:在數字沒有溢出的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。
1 << 1 //output 2 1 << 2 //output 4
2. >>
右移,即按二進制形式把所有的數字向右移動對應的位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1。
數學意義:右移一位相當於除2,右移n位相當於除以2的n次方。
4 >> 1 //output 2 4 >> 2 //output 1
3. & (AND)
與,即按二進制形式將所有的數字與目標數字按位進行與操作。
常見用法:通常用於二進制的取位操作,例如:一個數字&1,如果結果爲0則爲偶數,如果爲1則爲奇數。
2 & 1 //output 0 1 & 1 //output 1
4. | (OR)
或,即按二進制形式將所有的數字與目標數字按位進行或操作。
常見用法:通常用於二進制數字的無條件賦值。例如:一個數字|1,相當於與獲取與當前數字最接近的奇數。
1 | 1 //output 1 2 | 1 //output 3
5. ~ (NOT)
非,即按二進制形式將所有數字取反。
常見用法:位運算 NOT 實質上是對數字求負,然後減 1,因此 25 變 -26。
~1 //output -2
6. ^ (XOR)
異或,即按二進制形式將所有數字與目標數字對比,只有兩個數字不相同即只有一個數位存放的是1的時候返回1,如兩個數字相同返回0.
常見用法:xor運算的逆運算是它本身,也就是說兩次異或同一個數最後結果不變。可以用於簡單的加密,或交互數值操作。
var a = 2, b = 3; a ^= b; b = a ^ b; a ^= b; console.log(a); //output 3 console.log(b); //output 2