【问题标题】:Best way to exchange values of two integers? [duplicate]交换两个整数值的最佳方法? [复制]
【发布时间】:2011-12-20 05:56:33
【问题描述】:

可能重复:
What is the fastest way to swap values in C?

我需要交换两个整数的值(例如 x 和 y) 这是最简单的方法:

int temp = x;
x = y;
y = temp;

我也找到了更好的方法:

x = x + y;
y = x - y;
x = x - y;

有没有更好的方法来提高性能?

【问题讨论】:

标签: performance integer


【解决方案1】:

可以使用 XOR "^" 运算符:

  a = a^b;
  b = a^b;
  a = a^b;

【讨论】:

  • 是的,XOR 比 + 运算符快。谢谢。
  • @Ademiban: 引用自 wiki “大多数现代编译器可以优化掉原始交换中的临时变量,在这种情况下,原始交换使用与 XOR 相同数量的内存和相同数量的寄存器交换并且至少同样快,而且通常更快。”
  • 我不知道)) 我有 x=5 y=3 之后 x 是 0,y 是 5.in Java
  • @Ademiban 不可能!再次检查不同的值。 :))
  • :D 如果它至少在一种情况下工作错误,那就是错误的方式。
【解决方案2】:

在第二个选项中,您使用 2 个变量而不是第一个选项中的 3 个,这意味着您分配的内存更少。

【讨论】:

  • 是的,我想知道有没有更好的方法?比如说,用两个运算符来做。
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
相关资源
最近更新 更多