交換2個數值的方法

2021-09-20 08:00:44 字數 874 閱讀 7844

如何交換2個變數的值?一般來說,想到的方法是再找乙個臨時變數,通過一種順序存放的方式來達到交換值的效果。

比如有a,b這2個變數。取同型別的變數temp。

這樣就完成了交換。

但這樣做的話會多使用乙個temp的記憶體。如果沒有溢位的問題,可以嘗試加減法。

a = a + b ; b = a - b ; a = a - b ;

換成數**算來表示,a1 = a + b ; b1 = a1 - b = a + b - b = a ; a = a1 - b1 = a + b - a = b ;

完成整個運算無需temp。

還有一種方法,使用異或運算。

2個變數a和b。方法如下:

a = a^b ;  b =  b^a ; a = a^b ;

交換的過程:

a1 = a^b ; 

b1 = b^a1 = b^a^b = a ; 

a1 = a1^b1 = a^b^a = b ;

這裡的b1與a1就是我們想要的。

/*----------------------- 關於異或運算 ---------------------*/

異或,相同為0,不同為1 。 

真值表:

a^b01

0011

10根據真值表我們可以得到:a^a = 0 ; b^0 = b ;

假設t = 0011 ;那麼 t^0000 = 0011 ^ 0000 = 0011 ;

t^1111 = 0011 ^ 1111 = 1100 ;

交換兩個數值的方法

最容易想到的辦法,沒啥額外要求用這個一般沒問題。void swap int a,int b 特點 不需要中間變數 void swap int a,int b 道理和相加差不多 void swap int a,int b 在資料庫操作語句裡面,方便一句話搞定問題。update table set ro...

交換2個數

交換兩個數的順序,可以交換位址,可以交換值。當用函式呼叫法交換位址的時候,為什麼不可以實現。程式如下 這樣可以實現兩個數的交換 include void swap int x,int y void main void swap int x,int y include為什麼這個方法為什麼就不能實現。m...

關於兩個數值交換

一般在初學一門程式語言的時候就會接觸到兩個數值交換的問題,這一點在以後的程式設計中會經常用到,比如一些排序的程式中或者是類似前面的計算最大公約數等等,因此數值交換是程式設計最基本也是最重要的,這裡陳述兩種方法 1.使用中間變數來暫時的儲存乙個變數的值,這一點很容易理解,也很容易實現,類似這樣 以下 ...