面试题:不使用任何中间变量,交换a,b两个数字的值

这个最好采用异或语句进行比较,无须担心数值越界的问题,如果通过a=a+b;b=a-b;a=a-b;的话,有可能a+b值就直接越界了。

private void swap(int a, int b) {
    System.out.println("before swap,a = " + a + ",b = " + b);
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    System.out.println("after swap, a = " + a + ",b = " + b);
}

我们知道异或是相同取0相反取1,如:

 0101异或1101的结果是1000。如对两个数,经过三次进行异或运行后的结果是这两个数的值互换。如 a = 0101, b=1101,则进行的操作如下:

相关文章:

  • 2021-09-06
  • 2021-08-11
  • 2021-10-10
  • 2021-09-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
猜你喜欢
  • 2022-12-23
  • 2021-08-05
  • 2021-09-23
  • 2021-09-23
  • 2021-08-21
  • 2021-10-24
  • 2022-03-01
相关资源
相似解决方案