为什么Go有一个“清除(AND NOT)”运算符?

时间:2017-05-04 11:53:50

标签: go operators bitwise-operators

为什么Go有&^,“位清除(AND NOT)”运算符?

a &^ ba & ^b之间是否存在差异?

1 个答案:

答案 0 :(得分:7)

使用显式位清除运算符可以更轻松地处理文字和无类型常量。

无类型整数的默认类型为int,因此像a := uint32(1) & ^1这样的东西是非法的,因为^ 1首先被评估,并且它被评估为^ int(1),等于-2。 a := uint32(1) &^ 1是合法的,因为这里1根据上下文被评估为uint32。

明确清楚地表达可能会有一些性能提升,但我对此并不太确定。