### 位运算
位运算只能用于整数类型的变量,且需当它们拥有等长位模式时。
%b 是用于表示位的格式化标识符。
二元运算符
### 按位与 &:
1 & 1 -> 1
1 & 0 -> 0
0 & 1 -> 0
0 & 0 -> 0
### 按位或 |:
1 | 1 -> 1
1 | 0 -> 1
0 | 1 -> 1
0 | 0 -> 0
### 按位异或 ^:
#### 对应位置上的值根据以下规则组合:
1 ^ 1 -> 0
1 ^ 0 -> 1
0 ^ 1 -> 1
0 ^ 0 -> 0
### 位清除 &^:将指定位置上的值设置为 0。
## 一元运算符
### 按位补足 ^:
该运算符与异或运算符一同使用,即 m^x,对于无符号 x 使用“全部位设置为 1”,对于有符号 x 时使用 m=-1。例如:
^2 = ^10 = -01 ^ 10 = -11
### 位左移 <<:
用法:bitP << n。
bitP 的位向左移动 n 位,右侧空白部分使用 0 填充;如果 n 等于 2,则结果是 2 的相应倍数,即 2 的 n 次方。例如:
1 << 10 // 等于 1 KB
1 << 20 // 等于 1 MB
1 << 30 // 等于 1 GB
### 位右移 >>:
用法:bitP >> n。
bitP 的位向右移动 n 位,左侧空白部分使用 0 填充;如果 n 等于 2,则结果是当前值除以 2 的 n 次方。
### 运算符优先级
### 逻辑运算符
Go 中拥有以下逻辑运算符:==、!=(第 4.5.1 节)、<、<=、>、>=。
它们之所以被称为逻辑运算符是因为它们的运算结果总是为布尔值 bool。例如:
b3:= 10 > 5 // b3 is true
### 算术运算符
常见可用于整数和浮点数的二元运算符有 +、-、* 和 /。
### 优先级 运算符
7 ^ !
6 * / % << >> & &^
5 + - | ^
4 == != < <= >= >
3 <-
2 &&
1 ||