|、&、~、^运算符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