按位操作符 将其操作数当做32位的比特序列(二进制). 按位操作符操作数字的二进制形式, 但是返回的依然是标准的JavaScript数值.
操作符 `42 | 22`:
101010 = 42
10110 = 22
111110 = 62
操作符 `42 & 22`:
101010 = 42
10110 = 22
000010 = 2
操作符 `42 ^ 22`:
101010 = 42
10110 = 22
111100 = 60
操作符 `~42`:
42 = 00000000000000000000000000101010
-42 = 11111111111111111111111111010101
所有的按位操作符的操作都会被转成 补码 形式的有符号32位整数. 补码形式是指一个数的负对应值(如5和-5)为数值的所有比特位反转后, 再加1. 反转比特位即该数值进行'非'位运算, 也即该数值的饭吗
从概念上讲, 按位逻辑操作符遵守下面规则:
按位移动会先将 操作数 转换为 大端字节顺序(big-endian order) 的32位整数, 并返回与左操作数相同类型的结果. 右操作数应小于32位, 否则只有最低5个四姐会被使用.
注: Big-Endian: 高位字节排放在内存的低地址端, 低位字节排放在内存的高地址端, 又称为 "高位编址".
注意: 二进制转换十进制时最右侧的是第0项, 如果是第0项的次方是0, 1的次方是1.
1010101
1 = 1
2 = 4
4 = 16
6 = 64
1 + 4 + 16 + 64 = 85 = 1010101