zoukankan      html  css  js  c++  java
  • 面试题:不使用中间变量,交换两个数字

    面试题:不使用任何中间变量,交换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,则进行的操作如下:

  • 相关阅读:
    基于Twisted的简单聊天室
    小学题的python实现
    初识Go(8)
    初识Go(7)
    初识Go(6)
    初识Go(5)
    初识Go(4)
    初识Go(3)
    初识Go(2)
    初识Go(1)
  • 原文地址:https://www.cnblogs.com/tianyaxue/p/3143440.html
Copyright © 2011-2022 走看看