一、位运算符
位运算符处理32 位数
该运算中的任何数值运算数都会被转换为 32 位数,结果会被转换回 JavaScript 数
位运算符用于直接对二进制进行计算,共有七个运算符:
或运算(or):符号为 |,若两个二进制位都为0,则结果为0,否则为 1;
与运算符(and):符号为 &,若两个二进制位都为 1,则结果为1,否则为 0;
否运算(not):符号为 ~ ,对一个二进制位取反;
异或运算(xor):符号为 ^,若两个二进制位不相同,则结果为1,否为0。
左移运算(left shift):符号为 <<
右移运算(right shift):符号为 >>
带符号位的右移运算(zero filled right shift):符号为 >>>
二、位运算符简介
位运算符直接处理每一个比特位(bit),所以是非常底层的运算。
好处:运算速度极快;
缺点:运算很不直观,许多场合不能使用,否则会使代码难以理解和查错。
注意:位运算符只对整数起作用,如果一个运算子不是整数,则会自动转成整数后再执行。
在JavaScript内部,数值都是以64位浮点数的形式储存的,但是在做位运算的时候,是以32位带符号的整数进行运算的,并且返回的值也是一个32位带符号的整数。
三、各位运算符的特点
(一)或运算 和 与运算
逐个位数比较两个运算子
或运算:两个二进制位中只要有一个为 11,就返回 1,否则就返回 0;
与运算:两个二进制位中只要有一位为 0,就返回为 0,否则就返回 1;
0|3; //3
0&3; //0
3|4 //7
3&4 //0
在上面的 0和 3的表达式中,0和 3的二进制形式分别为 00 和 11,所以进行"或运算" 会得到 11(即3);进行“与运算” 会得到 00(即0);
在上面的 3和 4的表达式中,3和 4的二进制形式分别为 11 和 001,所以进行"或运算" 会得到 111(即7);进行“与运算” 会得到 0(即0);
注意:
位运算只对整数有效,遇到小数时,会将小数