位运算 NOT
var iNum1 = 25; //25 等于00000000000000000000000000011001 var iNum2 = ~iNum1; //转换为 11111111111111111111111111100110
位运算 AND
var iResult = 25 & 3; alert(iResult); //输出 "1"25 和 3 进行 AND 运算的结果是 1。为什么?分析如下: // 25 = 0000 0000 0000 0000 0000 0000 0001 1001 // 3 = 0000 0000 0000 0000 0000 0000 0000 0011 //--------------------------------------------- // AND = 0000 0000 0000 0000 0000 0000 0000 0001 // 可以看出,在 25 和 3 中,只有一个数位(位 0)存放的都是 1,因此,其他数位生成的都是 0,所以结果为 1。
位运算 OR
var iResult = 25 | 3; alert(iResult); //输出 "27"25 和 3 进行 OR 运算的结果是 27: // 25 = 0000 0000 0000 0000 0000 0000 0001 1001 // 3 = 0000 0000 0000 0000 0000 0000 0000 0011 //-------------------------------------------- // OR = 0000 0000 0000 0000 0000 0000 0001 1011
位运算 XOR
var iResult = 25 ^ 3; alert(iResult); //输出 "26"25 和 3 进行 XOR 运算的结果是 26: // 25 = 0000 0000 0000 0000 0000 0000 0001 1001 // 3 = 0000 0000 0000 0000 0000 0000 0000 0011 // --------------------------------------------- // XOR = 0000 0000 0000 0000 0000 0000 0001 1010
左移运算
左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000):
有符号右移运算
有符号右移运算符由两个大于号表示(>>)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。例如,把 64 右移 5 位,将变为 2
无符号右移运算
无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。