yu *_*ian -3 operators go bitwise-operators
我正在阅读运算符章节中的Golang教程书,上面写着5 &^ 11 = 4,但是这个运算符似乎并不常见,所以我无法立即理解,
我尝试通过列出三个数字的二进制形式来猜测其逻辑:
5 = 0101
&^) 11= 1011
-------------
4 = 0100
Run Code Online (Sandbox Code Playgroud)
但是我还是不明白,有人可以解释它是如何&^工作的吗?谢谢。
Run Code Online (Sandbox Code Playgroud)&^ bit clear (AND NOT)
因此,它计算第一个操作数的AND连接和第二个操作数的取反值。
它的名称“位清除”来自它的作用。检查是否使用了两个1位值:如果第二个操作数是1,则意味着要“清除”:结果将0与第一个操作数无关。如果第二个操作数是0,则表示不清除,结果将是第一个操作数。
其卡诺地图为:
A | B | A &^ B = A AND NOT(B)
--+---+----------------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 1
1 | 1 | 0
Run Code Online (Sandbox Code Playgroud)
当整数使用的,操作被执行逐位,也就是将要使用的结果的第0位&^上的第一数目和所述第二数目的第0位; 结果的第一位将用于&^第一位数字的第一位和第二位等。
因此,基本上,结果A &^ B将是A通过清除(以的二进制表示形式)中0由1标记的位(将其设置为)得出的数字。BB