### 位運算
位運算只能用于整數類型的變量,且需當它們擁有等長位模式時。
%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 ||