首页   /   JS,DOM   /   JavaScript 位操作符

内容

位运算 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 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。