我们都知道位运算符比正常的运算符速度要快,但是为什么会快呢?首先我们正常的运算符也是通过计算机通过位运算调用栈来实现的。位运算符计算时,首先将运算量转化为2进制。
那么javascript位运算符有哪些呢?
1. & 按位与
2. | 按位或
3. ^ 按位异或
4. ~ 取反
5. >> 按位左移
6. >> 按位右移
说明:
(1)位运算符中除 ~ 外,均为二目运算符,即要求两侧各有一个运算量。
(2)运算只能是整型或字符型的数据,不能为实型数据。
1.按位与 &
左值与右值都为true,则为true,否则就为false。
console.log(5&7);//5
详解:
2.按位或 |
左值与右值都为true,则为true,否则就为false。
console.log(5|7);//7
详解:
3.按位异 ^
若参与计算的两个二进位为同号则为0,异号则为1
console.log(true ^ true);//0
console.log(true ^ false);//1
console.log(false ^ false);//0
console.log(false ^ true);//1
详解:
4.按位取反 ~
console.log(~2.5);//-3 取反之后向下取整
5.按位左移 <<
详解:例:5<<2 把二进制5向左推移两位,右边补0,也相当于是 5*2^2,向下取整。
console.log(5<<2);//20 5*x2*2=20
6.按位右移 >>
详解:例:5>>2 把二进制5向右推移两位,左边补0,也相当于是5/2^2,向下取整。
console.log(5>>2);//1 5*/(2*2)=1.25