
上QQ阅读APP看书,第一时间看更新
2.3.6 位运算符
位运算符是用来对二进制数进行计算的,当使用位运算符时,JavaScript会先把其他进制(十进制、八进制和十六进制)的数转换成32位的二进制数,再来进行运算,位运算符包括以下7种。
1)与运算(&):二元运算符,将两个操作数进行逻辑与运算后,结果以十进制数的形式返回,例如:

2)或运算(|):二元运算符,将两个操作数进行逻辑或运算后,结果以十进制数的形式返回,例如:

3)异或运算(^):二元运算符,将两个操作数进行逻辑异或运算后,结果以十进制数的形式返回,例如:

4)非运算(~):一元运算符,对操作数的每一位进行非运算后,结果以十进制数的形式返回,由于进行非运算后原数的符号位也要取反,因此原数的符号会改变,例如:

5)左移运算(<<):二元运算符,对第一个操作数的二进制数进行所有位数向左移动n位的操作,其中n等于第二个操作数的值,右侧空出来的位置用0来填补,例如:

6)无符号右移运算(>>>):二元运算符,对第一个操作数的二进制数进行所有位数向右移动n位的操作,其中n等于第二个操作数的值,左侧空出来的位置用0来填补,例如:

7)带符号右移运算(>>):二元运算符,对第一个操作数的二进制数进行所有位数向右移动n位的操作,其中n等于第二个操作数的值。左侧空出来的位置根据符号填补,如果是正数(第32位为0),则用0填补,与无符号右移运算结果相同;但如果是负数(第32位为1),则用1来填补,例如:

下面列出上述实例的代码来验证其正确性:

输出如图2.28所示。

图2.28 样例输出2.28