概述

按位操作符 将其操作数当做32位的比特序列(二进制). 按位操作符操作数字的二进制形式, 但是返回的依然是标准的JavaScript数值.

操作符 (1)

操作符 `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位整数

所有的按位操作符的操作都会被转成 补码 形式的有符号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