根据specification,此运算符被称为位清除:
&^ bit clear (AND NOT) integers
我之前从未听说过这样的操作员,我想知道为什么它有用。
它似乎采用左操作数并禁用右操作数中打开的所有位。是否有关于运营商的正式描述?
我注意到的另一件事是,它不是可交换的。
与^
联合的伪代码:
11110 &^ 100 //11010
11110 ^ 100 //11010
11110 &^ 0 //11110
11110 ^ 0 //11110
11110 &^ 11110 //0
11110 ^ 11110 //0
11110 &^ 111 //11000
11110 ^ 111 //11001
111 &^ 11110 //1
111 ^ 11110 //11001
答案 0 :(得分:6)
从符号(&
和^
的串联),名称“而不是”(以及“bit clear”一词,听起来与“bit set”相反),很明显,A &^ B
正在进行A & ^B
(其中^
是按位反转)。
通过检查运算符的真值表来备份:
fmt.Println(0 &^ 0); // 0
fmt.Println(0 &^ 1); // 0
fmt.Println(1 &^ 0); // 1
fmt.Println(1 &^ 1); // 0