Johuer's Blog

多学知识,精简代码

0%

javascript操作符-位操作符

操作符

位操作符

1. 按位非

由一个波浪号表示(~)

1
2
3
var num1 = 25;      // 二进制00000000000000000000000000011001
var num2 = ~num1; // 二进制11111111111111111111111111100110
alert(num2); // -26

相当于操作数的负值减1,同

1
2
3
var num1 = 25;
var num2 = -num1 - 1;
alert(num2); // -26
2. 按位与
1
2
3
4
5
6
var result = 25 & 3;
alert(result); //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
3. 按位或
1
2
3
4
5
6
var result = 25 | 3;
alert(result); //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
4. 按位异或

只有一个为1才返回1

1
2
3
4
5
6
var result = 25 ^ 3;
alert(result); //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
5. 左移

以0填充空位,且不影响操作数的符号位

1
2
var oldValue = 2; // 二进制10
var newValue = oldValue << 5; // 二进制1000000 十进制64
6. 有符号位的右移

>>原理同上,只是方向相反在左边补充0

7. 无符号位的右移

>>>

1
2
var oldValue = -64; // 二进制11111111111111111111111111000000
var newValue = oldValue >>> 5; //十进制134217726