网道(WangDoc.com),互联网文档计划　概述#二进制位运算符用于直接对二进制位进行计算,一共有7个。　二进制或运算符　(or):符号为　|　,表示若两个二进制位都为　0　,则结果为　0　,否则为　1　。　二进制与运算符　(and):符号为　&　,表示若两个二进制位都为1,则结果为1,否则为0。　二进制否运算符　(not):符号为　~　,表示对一个二进制位取反。　异或运算符　(xor):符号为　^　,表示若两个二进制位不相同,则结果为1,否则为0。　左移运算符　(left　shift):符号为　>　,详见下文解释。　头部补零的右移运算符　(zero　filled　right　shift):符号为　>>>　,详见下文解释。　这些位运算符直接处理每一个比特位(bit),所以是非常底层的运算,好处是速度极快,缺点是很不直观,许多场合不能使用它们,否则会使代码难以理解和查错。　有一点需要特别注意,位运算符只对整数起作用,如果一个运算子不是整数,会自动转为整数后再执行。另外,虽然在　JavaScript　内部,数值都是以64位浮点数的形式储存,但是做位运算的时候,是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数。　i　=　i　|　0　;　上面这行代码的意思,就是将　i　(不管是整数或小数)转为32位整数。　利用这个特性,可以写出一个函数,将任意数值转为32位整数。　function　toInt32　(　x　)　{　return　x　|　0　;}　上面这个函数将任意值与　0　进行一次或运算,这个位运算会自动将一个值转为32位整数。下面是这个函数的用法。　toInt32(　1.001　)　//　1　toInt32(　1.999　)　//　1　toInt32(　1　)　//　1　toInt32(-　1　)　//　-1　toInt32(　Math　.pow(　2　,　32　)　+　1　)　//　1　toInt32(　Math　.pow(　2　,　32　)　-　1　)　//　-1　上面代码中,　toInt32　可以将小数转为整数。对于一般的整数,返回值不会有任何变化。对于大于或等于2的32次方的整数,大于32位的数位都会被舍去。　二进制或运算符#二进制或运算符(　|　)逐位比较两个运算子,两个二进制位之中只要有一个为　1　,就返回　1　,否则返回　0　。　0