-
&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
常用用法: 判断奇偶性:用if ((a & 1) == 0)
代替if (a % 2 == 0)
来判断a是不是偶数。 -
|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
常用用法:取整:12.34 | 0 === 12; -10.213 | 0 === -10
-
^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
作用:两个变量互换值,var a = 2, b=5
;
执行:a ^= b; b ^= a; a ^= b;
-
~
取反运算符
计算方法:
正数按位取反总结
(1) 十进制转为二进制原码
(2) 二进制原码按位取反
(3) 符号位保留,其余位取反+1
(4) 二进制原码转为十进制
负数按位取反总结
(1) 十进制转为二进制原码
(2) 符号位保留,其余位取反+1
(3) 二进制原码按位取反
(4) 二进制原码转为十进制
等价于~x === -x-1
或者-(x+1)
作用:
1、配合 indexOf() 判断数组或者字符串中是否存在某个元素
因为 不存在返回-1,~-1 = 0 ,大于-1的值,0,1,2,3 … 按位非的值-1,-2,-3,-4
if判断只要是非 0 都为 真
2、向下取整 比Math.floor(), parseInt() 等效率高
~~5.5 === 5; ~~-5.5 === -5
-
<<
左移
用来将一个数的各二进制位全部左移N位,右补0作用:左移常被用来做 * (2 ^ n)的运算,因为直接基于二进制运算,所以左移效率比 * (2 ^ n)高,
x * (2 ^ n) ==> x << n
例如:10 * (2 * 2* 2) === 10 << 3
-
>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0作用:右移常被用来做 / (2 ^ n)的运算,效率更高
例如:~~(12 / (2*2*2)) === ~~(12 >> 3)
-
>>>
无符号右移
运算符规则是:各二进位全部右移若干位,高位补0,低位丢弃。
几种逻辑运算符的运算规则及使用
最新推荐文章于 2024-05-06 11:05:43 发布