按位与(AND)&
按位与运算符 & 对两个数的每一位执行 AND 操作。只有两个相应的比特位都为 1 时,结果的相应比特位才为 1。
var result = 5 & 3; // 0101 & 0011 = 0001,返回 1
按位或(OR)|
按位或运算符 | 对两个数的每一位执行 OR 操作。只要两个相应的比特位中至少有一个为 1,结果的相应比特位就为 1。
var result = 5 | 3; // 0101 | 0011 = 0111,返回 7
按位异或(XOR)^
按位异或运算符 ^ 对两个数的每一位执行 XOR 操作。只有两个相应的比特位不同,结果的相应比特位才为 1。
var result = 5 ^ 3; // 0101 ^ 0011 = 0110,返回 6
按位非(NOT)~
按位非运算符 ~ 对一个数的每一位执行 NOT 操作。它将 0 变为 1,将 1 变为 0。
var result = ~5; // ~0101 = 1010,返回 -6(以补码表示)
左移位 <<
左移位运算符 << 将一个数的所有比特位向左移动指定的位数。在左移过程中,右侧用零填充。
var result = 5 << 1; // 0101 左移 1 位变成 1010,返回 10
右移位 >>
右移位运算符 >> 将一个数的所有比特位向右移动指定的位数。在右移过程中,左侧用符号位填充。
var result = 5 >> 1; // 0101 右移 1 位变成 0010,返回 2
无符号右移 >>>
无符号右移运算符 >>> 将一个数的所有比特位向右移动指定的位数。在右移过程中,左侧用零填充。
var result = -5 >>> 1; // -5 的二进制表示为 1111111111111111111111111111111111111111111111111111111111111011
// 右移 1 位变成 0111111111111111111111111111111111111111111111111111111111111101,返回 2147483645
这些位运算符通常用于对数据进行一些底层操作,例如创建掩码、进行位级计算等。在一般的 JavaScript 编程中,使用场景相对较少,主要用于需要对二进制数据进行直接处理的情况。
转载请注明出处:http://www.pingtaimeng.com/article/detail/3524/JavaScript