介绍
JavaScript在做位运算的时候,会事先将其转换为32位有符号整型(int)并开始计算,在得到结果后再将其转换回JavaScript的数值类型。
位运算符
运算符 | 描述 |
---|---|
& | 与 |
| | 或 |
~ | 非 |
^ | 异或 |
<< | 左移 |
>> | 右移 |
JavaScript中唯一的一元位运算符是(~),表示“非”运算。一元运算符
下面以数字5和1为例,进行二进制转换并执行计算
5 二进制 =》 0000 0101
1 二进制 =》 0000 0001
一、& 与
5 && 1 = 1
二进制解说:
总结:如果两个位数不同,则为0
二、| 或
5 || 1 = 5
二进制解说
总结:如果位数上面不同,有1则取1
三、~ 非
~5 = -6
二进制解说:
~(-5 ) = 4
二进制解说
第一步:5先转换为-5
第二步:-5取反得4
总结:
- 0000 **** 表示正数, 1111 **** 表示负数,前四位表示正负号符号位。
- 正数取反补码-1,负数取反补码+1
- **速记: ~N = -(N + 1) **,如 ~5 = -(5 + 1) = -6 ; ~(-5) = -(-5 + 1) = 4
四、^ 异或
5 ^ 1 = 4
二进制解说:
总结:如果位数上面相同,则是0,反之是1
五、<< 左移
5 << 1 = 10
二进制解说:
总结:0101左移一位是在右边补0, 结果为1010
六、>> 右移
5 >> 1 = 10
二进制解说:
总结:0101右移一位是在左边补0,结果为0010