JavaScript位運算子使用

2021-09-14 05:27:58 字數 1553 閱讀 4248

&是二元運算子,它以特定的方式的方式組合運算元中對應的位,如果對應的位都為1,那麼結果就是1, 如果任意乙個位是0 則結果就是0。

1 & 3的結果為1

那我們來看看他是怎麼執行的

1的二進位制表示為 0 0 0 0 0 0 1

3的二進位制表示為 0 0 0 0 0 1 1

根據 & 的規則 得到的結果為 0 0 0 0 0 0 0 1,十進位制表示就是1

|運算子跟&的區別在於如果對應的位中任乙個運算元為1 那麼結果就是1。

1的二進位制表示為 0 0 0 0 0 0 1

3的二進位制表示為 0 0 0 0 0 1 1

所以 1 | 3的結果為3

^運算子跟|類似,但有一點不同的是 如果兩個操作位都為1的話,結果產生0。

1的二進位制表示為 0 0 0 0 0 0 1

3的二進位制表示為 0 0 0 0 0 1 1

所以 1 ^ 3的結果為2

~運算子是對位求反,1變0,0變1,也就是求二進位制的反碼

1的二進位制表示為 0 0 0 0 0 0 1

所以 ~1 的結果是-2

>>運算子使指定值的二進位制所有位都右移規定的次數,對於其移動規則只需記住符號位不變,左邊補上符號位即按二進位制形式把所有的數字向右移動對應的位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1。

1的二進位制表示為 0 0 0 0 0 0 1

所以 1>>1的結果為0

《運算子使指定值的二進位制所有位都左移規定的次數,對於其移動規則只需記住丟棄最高位,0補最低位即按二進位制形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。

1的二進位制表示為 0 0 0 0 0 0 1

所以 1<<1的結果為2

>>>運算子忽略了符號位擴充套件,0補最高位,但是只是對32位和64位的值有意義。

1、使用&運算子判斷乙個數的奇偶

偶數 & 1 = 0

奇數 & 1 = 1

那麼0&1=0,1&1=1

2、使用~~,>>,<<,>>>,|來取整

~~3.14 = 3

3.14 >> 0 = 3

3.14 << 0 = 3 3.14 | 0 = 3 3.14 >>> 0 = 3(>>>不可對負數取整)

注意:~~-3.14 = -3 其它的一樣

3、使用<<,>>來計算乘除

乘法:1*2 = 2

1<>1 = 1(2/2的一次方)

4、利用^來完成比較兩個數是否相等

1 ^ 1 = 0

1 ^ 非1數 !=0

所以同乙個數……同乙個數等於0,否則不等於0

5、使用^來完成值交換

a = 1

b = 2

a ^= b

b ^= a

a ^= b

結果a=2,b=1

6、使用&,>>,|來完成rgb值和16進製制顏色值之間的轉換

functionhextorgb(hex)

functionrgbtohex(rgb)

位運算子,「,」逗號運算子,

位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...

ECMAScript 運算子 位運算子

位運算子是在數字底層 即表示數字的 32 個數字 進行操作的 重溫整數 ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32...