使用按位运算符XOR交换两个数字

时间:2019-11-18 15:40:26

标签: bitwise-operators

我正在阅读一本名为《定量金融面试实用指南》的访谈书,这是一个关于算法的问题,我无法理解使用XOR的解决方案。

问题:

如何在不使用额外存储空间的情况下交换两个整数i和j?

本书提供的解决方案:

利用x ^ x = 0和0 ^ x = x的事实(注意:^是按位运算符XOR):

void swap (int &i, int&j){
i = i^j;
j = j^i; //j = i^(j^i) = i
i = i^j; //i = (i^j)^i = j
}

任何专家都可以提供一些指导吗?非常感谢您的建议:)

0 个答案:

没有答案