算术运算符
关系运算符
逻辑运算符
位运算符
按位操作,按位取
按位& | a&b | 对应位都为1,取1; 其他都为0 |
---|---|---|
按位| | a !b | 对应位有1,取1; 其他都为0 |
按位异或 ^ | a ^b | 两种情况: 1. 两个操作数: 不同位取1;相同取0 1. 单个操作数: 取反 |
位清空 &^ | a&^b | 对于b上的每个数值 - 如果为0,则取b对应位上的数值 - 如果为1,结果位取0 |
(用a中置1的位清空b上的位) |
// &^ 按位清零
// 右边的操作位为 1 时,左边的位置零
// 右边的操作位为 0 时,左边的位不变
1 &^ 0 // 1
1 &^ 1 // 0
0 &^ 1 // 0
0 &^ 0 // 0
const (
Readable = 1 << iota
Writeable
Executable
)
func TestBitClear(t *testing.T) {
a := 7 //0111
a = a &^ Readable
b = a &^ Executable
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
}
赋值运算符
= | ||
---|---|---|
+= | ||
-= | ||
*= | ||
/= | ||
%= | ||
<<= | ||
>>= | ||
&= | ||
|= |