|、&、~、^運算符javascript
二進制計算裏面 | 兩數同位是0對應位纔是0java
1|2 = (0001 或 0010) = 0011 = 3
複製代碼
&兩數同位是1對應位纔是1bash
1&2 = (0001 且 0010) = 0000 = 0
複製代碼
^兩數同位相同都取0,不一樣都取1post
1^2 = (0001 異或 0010) = 0011 = 3
複製代碼
~每位取反的補碼spa
~2 = 11101(補) = 10010(原)+1 = -(2+1) = -3
補碼的轉換規則是:最左符號位不變,其他位取反再加1
複製代碼
二進制位運算都是整數運算,計算前都會進行取整,因此能夠巧用位運算符來小數取整code
~~2.345 = 2
0|3.222 = 3
複製代碼
還有移位運算符,可是平時不多用到ip
<<
左移運算符get
>>
右移運算符class