交換兩個數的值是一道很基本的題,通常我們都會建立乙個臨時變數來進行兩個數值的交換。
但是現在,我們不建立臨時變數去將兩個數的值進行交換。
這裡我們要用到二進位制相關知識
&(按位與)
|(按位或)
^(按位異或)
~(取反)
<<(左移)
>>(右移)
以上是二進位制裡面的一些操作,不過我們重點來說^在這裡的作用
^ 按位異或:兩數對應的二進位制數字相異或,兩數字不同結果位為1,否則為0。
利用這個操作,就可以實現本題要求。
**如下
#include int main(void)
中間交換過程可以看到總共出現三個式子,只要記住左值首尾相同即可。如下所示
a
= a ^ b;
b = a ^ b;
a
= a ^ b;
不建立臨時變數,交換兩個數的內容
不建立臨時變數,交換兩個數的內容 方法一 加減法 define crt secure no warnings include int main 程式設計思路 首先從鍵盤鍵入兩個整數 其次是交換兩個數的內容 不採用中間變數,我們可以選擇加減法,首先把a b的值賦給a,再把新的a減掉b,即實現b的值變為...
不用臨時變數交換兩個數的值
就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...
不用臨時變數交換兩個數的值
就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...