前天面试的时候,笔试考到一个题目:A与B的值交换,不使用第三个变量,分别用算数运算和位运算来实现。
算数运算方法挺早就接触了,所以很快的就做出来:
A = A - B;
B = A + B;//度娘之后知道了,如果超出了B的范围,可能会出错,慎用。
A = B - A;
位运算一直学的很烂,所以到了位运算 ,便没了头绪,今天想起,度娘之后,知道了原来是按位亦或来实现的:
A = A ^ B;
B = A ^ B;
A = A ^ B;
原理:利用一个数异或本身等于0以及异或运算符合交换率。