微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于 XOR,“arr[i] ^= 1”和“arr[i] ^1”有什么区别?

如何解决关于 XOR,“arr[i] ^= 1”和“arr[i] ^1”有什么区别?

当我像下面这样写

int [] test = {4};
int a = test[0]^=1;
int b = test[0]^1;

我可以得到这个输出

输出

test[0]^=1 : 5 a : 101
test[0]^1 : 4 b : 100

我认为 test[0] = 100 -> test[0]^1 = 101 但事实并非如此。

      100 
  XOR   1
----------
      101

你能解释一下有什么不同吗?

解决方法

这是因为由于 101,test[0] 值已经更改为 test[0]^=1test[0]^=1 实际上是 test[0] = test[0] ^ 1。因此,在执行 b = test[0] ^ 1 时,您实际上是在执行 101 ^ 1,即 100。所以程序输出是正确的。

int [] test = {4};   // test[0] = 4 = 100
int a = test[0]^=1;  // test[0] = 100 ^ 1 = 101 = 5,a = 5 = 101
int b = test[0]^1;   // test[0] = 5,b = 101^1 = 100 = 4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。