我无法通过谷歌搜索到关于AND NOT的任何有用结果,这个操作符到底是什么,我该如何在像C语言这样的编程语言中使用它?我查阅了规范,并没有找到任何有用的信息,只有一个列表显示它是 &^
(AND NOT)。
我无法通过谷歌搜索到关于AND NOT的任何有用结果,这个操作符到底是什么,我该如何在像C语言这样的编程语言中使用它?我查阅了规范,并没有找到任何有用的信息,只有一个列表显示它是 &^
(AND NOT)。
x &^ y
在C中的等效形式是x & ~y
。这意味着"x
和(bitwise NOT of y
)"。& ^
描述为"bit clear"操作,这给出了你想要使用它的想法。作为两个单独的操作,~y
将每个二进制位转换为零,然后清除x
中相应的二进制位。每个零位将被转换为一,从而保留x
中的相应位。x | y
是根据掩码常量y
打开x
的某些位的方法,则x &^ y
则执行相反操作并关闭相同的位。1010 &^ 0011
,则会得到不同的结果。 “x AND(y的按位非)”是正确的。 - Mayank&^ 运算符是按位清除(AND NOT):在表达式 z = x &^ y 中,如果 y 的对应位为 1,则 z 的每个位都为 0;否则 z 的每个位等于 x 的对应位。
摘自 《Go 程序设计语言》
示例:
package main
import "fmt"
func main(){
var x uint8 = 1
var y uint8 = 1 << 2
fmt.Printf("%08b\n", x &^ y);
}
结果:
00000001
&^
不是一个独立的运算符,但它可能类似于7 按位与 按位取反(1)
。 - Adam Smith