算术运算符

关系运算符

逻辑运算符

位运算符

按位操作,按位取

按位& 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. // &^ 按位清零
  2. // 右边的操作位为 1 时,左边的位置零
  3. // 右边的操作位为 0 时,左边的位不变
  4. 1 &^ 0 // 1
  5. 1 &^ 1 // 0
  6. 0 &^ 1 // 0
  7. 0 &^ 0 // 0
  8. const (
  9. Readable = 1 << iota
  10. Writeable
  11. Executable
  12. )
  13. func TestBitClear(t *testing.T) {
  14. a := 7 //0111
  15. a = a &^ Readable
  16. b = a &^ Executable
  17. t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
  18. }

赋值运算符

=
+=
-=
*=
/=
%=
<<=
>>=
&=
|=