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

我正在阅读一本名为《定量金融面试实用指南》的访谈书,这是一个关于算法的问题,我无法理解使用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
}

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

shenghuat 回答:使用按位运算符XOR交换两个数字

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3079695.html

大家都在问