《JavaScript高级程序设计》笔记(2):位操作符

1.按位非(NOT)

2.按位与(AND)

3.按位或(OR)

4.按位异或(XOR)

5.左移

6.有符号右移

7.无符号右移

------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.按位非(NOT):

符号:~

功能:返回数值的反码。

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

操作数的负值减1。因此下面的代码也能得到相同的结果:

var num1 = 25;
var num2 = -num1 -1;
alert(num2);           // "-26"

按位非是在数值底层操作,因此速度更快。

 

2.按位与(AND)

符号:&

功能:只在两个数值的对应都是1时才返回1,任何一位是0,结果都是0。如下表:

第一个数值 第二个数值 结果
1 1 1
1 0 0
0 1 0
0 0 0

 

var result = 25 & 3;
alert(result);           //1

 

3.按位或(OR)

符号: |

功能:在有一个位是1的时候就返回1,而只有在两个位都是0的情况下才返回0。

第一个数值 第二个数值 结果
1 1 1
1 0 1
0 1 1
0 0 0
var result = 25 | 3;
alert(result);        //27

4.按位异或(XOR)

符合:^

功能:在两个位对应只有一个1的时候才返回1,如果对应的两个位是1或0时返回0。

第一个数值 第二个数值 结果
1 1 0
1 0 1
0 1 1
0 0 0

 

var result = 25 ^ 3;
alert("result");      //26

 

5.左移

符号:<<

功能:所有位向左移,右边空出来的用0补。

var oldValue = 2;              //二进制的10
var newValue = oldValue << 5; //等于二进制的1000000,十进制到底64

左移不影响操作数的符号位。

 

6.有符号右移:

符号:>>

功能:将数值向右移动,保留符号位(正负号),左侧的空位用符号位来填充。

var oldValue = 64;                //二进制的1000000
var newValue = oldValue >> 5;  //等于二进制的10,即十进制的2

 

7.无符号右移:

符号:>>>

功能:正数,同有符号右移;负数,用0填充空位,而不是像正数(有符号右移)以符号位填充空位。

var oldValue = -64;
var newValue = oldValue >>> 5;

 

posted @ 2013-09-10 13:50  Unicron  阅读(333)  评论(0编辑  收藏  举报
无觅关联推荐,快速提升流量