当前位置: 首页 > 知识库问答 >
问题:

关于异或,“arr[i]^=1”和“arr[i]^1”有什么区别?[副本]

上官扬
2023-03-14

当我像下面这样写的时候

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

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

共有1个答案

罗诚
2023-03-14

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

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
 类似资料:
  • 问题内容: 我今天发现了一件奇怪的事情,想知道是否有人可以阐明其中的区别? 运行完每个循环后,没有改变,但是在每个元素中添加了一个。我实际上使用该版本在循环内写入初始化的NumPy数组。 问题答案: 不同之处在于,一个修改数据结构本身(就地操作),而另一个仅 重新分配 变量。 仅出于完整性考虑: 是 不是总是 做就地操作,有(至少)三种例外情况: 如果 没有实现 的则方法的声明仅仅是一个速记。如果

  • 问题内容: 和PHP 和有什么不一样? 问题答案: 是先递增,后递增。 pre-increment:先增加变量,然后取消引用。 后递增:取消引用然后递增 “利用PHP允许您进行后递增($ i )和预递增( $ i)这一事实。只要您未编写类似$ j = $ i ++的内容,其含义是相同的。预增量几乎快了10%,这意味着您应该在有机会时从后增量切换到预增量,特别是在紧密循环中,尤其是如果您对微优化感到

  • 我不知道这是怎么运作的。所以任何人都可以帮我。

  • 和之间有什么区别? 我认识到表示矩阵的-行(平行形状),但表示矩阵的-行类似于垂直形状。 我想知道为什么显示垂直形状。

  • 我不知道这是怎么回事。所以任何人都可以帮我做这件事。

  • 本文向大家介绍npm i和npm install有什么区别?相关面试题,主要包含被问及npm i和npm install有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 用npm i安装的模块无法用npm uninstall删除,用npm uninstall i才卸载掉 npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号 部分npm包在