1. 程式人生 > >異或運算來實現兩個變數互換

異或運算來實現兩個變數互換

        一般情況下,如果我們要實現兩個變數互換需要藉助於一個第三方臨時變數,這個臨時變數可以臨時存放某一個變數的值,幫助我們完成值的交換。有沒有不需要其他變數、直接實現值互換的方法呢?  答案是:當然有。

        這裡介紹一種特殊的情況(並不是對所有型別的變數都可以使用):當變數的型別是整形或者字元型的時候,位運算是一個非常有用的工具,尤其是異或運算。異或運算的法則是:x^0=x;x^x=0; 並且 a^b=b^a; 由此,可以得到:

a^b^b=a^(b^b)=a^0=a; 進行如下運算:

a=a^b;

b=a^b;

a=a^b;

實際上就是:令 a=a^b; 那麼 b=a^b; 實際是 b=(a^b)^b=a^b^b=a^(b^b)=a^0=a;

而 a=a^b; 其實就是 a=(a^b)^a=a^b^a=b;

所以運算完成後就達到了值互換的目的。

再次強調一下,變數型別是整型或字元型才可以使用該方法。