JavaScript位操作及其簡單應用

原文鏈接


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章