[java学习]移位运算交换两数的值的出错情况

移位运算,交换两数的值

    int a=10;
    int b=52;
    System.err.println("开始:"+a+","+b);
    a=a^b;
    b=a^b;
    a=a^b;
    System.err.println("结束:"+a+","+b);

结果是:

开始:10,52
结束:52,10

什么时候会出错呢?

当两个数都是自己时,将会计算出错,结果都会是0.

    int a=10;
    //int b=52;
    System.err.println("开始:"+a+","+a);
    a=a^a;
    a=a^a;
    a=a^a;
    System.err.println("结束:"+a+","+a);

结果是:

 开始:10,10
 结束:0,0

你可能感兴趣的:(java)