没啥多解释的,举例子,看用法。

    // 与运算符 AND &
    // 如果两位都是 1 则设置每位为 1
    /*
    0 & 0 0
    0 & 1 0
    1 & 0 0
    1 & 1 1

    1. 1111 & 0010 0010<br />*/

    // 或运算符 OR |
    // 如果两位之一为 1 则设置每位为 1
    /*
    0 | 0 0
    0 | 1 1
    1 | 0 1
    1 | 1 1

    1. 1111 | 0010 1111<br />*/

    // 异或运算符 XOR ^ (bitwise-xor)
    // 当对一对数位进行位运算 XOR 时,如果数位是不同的则返回 1
    /*
    0 ^ 0 0
    0 ^ 1 1
    1 ^ 0 1
    1 ^ 1 0

    1. 1111 ^ 0010 1101<br />*/<br />// 0 ^ 0 = 0;<br />// 0 ^ x = x; (x != 0);<br />// x ^ 0 = x; (x != 0);<br />// x ^ x = 0; (x != 0);

    // x ^ y = y ^ x;

    // 非运算符 NOT ~
    // 反转所有位
    /
    ~ 5 -> ~0101 -> 1010 -> 10
    /

    // 零填充左位移 <<
    // 通过从右推入零向左位移,并使最左边的位脱落。

    // 语法 数值 << 左移位数 (num << digit)
    // 如
    5 << 1 // 表示数值5左移1位后的结果 -> 10
    /*
    操作 结果 等同于 结果
    5 << 1 10 0101 << 1 1010

    说明:
    num << 1 等价于 num 2
    num << 2 等价于 num
    (2 2) num 乘以 2的2次方
    nun << 3 等价于 num * (2
    3) num 乘以 2的3次方

    1. num << n 等价于 num * (2 ** n)<br />*/

    // 有符号右位移 >> (Right shift)
    // 通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。

    // 语法 数值 >> 右移位数 (num >> digit)
    // 如
    5 >> 1 // 表示数值5右移1位后的结果 -> 4
    /*
    操作 结果 等同于 结果
    5 >> 1 2 0101 >> 1 0010
    9 >> 2 2
    -9 >> 2 -3

    说明:
    num >> 1 等价于 Math.floor(num / 2) num除以2向下取整

    1. num >> n 等价于 Math.floor(num / (2 ** n))

    */

    // 零填充右位移 >>>
    // 通过从左推入零来向右位移,并使最右边的位脱落。
    // ↑ >>>这个在负数的时候会产生正数结果,人脑不太好想象,用的也很少

    // 语法 数值 >>> 右移位数 (num >>> digit)
    // 如
    5 >>> 1 // 表示数值5右移1位后的结果 -> 2
    /*
    操作 结果 等同于 结果
    5 >>> 1 2 0101 >>> 1 0010

    */