先看一下交換變數的常規方式:
public
static
void
swap1()
輸出:
i:1,j:5
i:5,j:1
使用臨時變數儲存一下其中乙個值,這種方法所有人都知道,且可以交換任何變數。
如果是int或者long等整數變數,還可以通過以下方式交換:
public
static
void
swap2()
輸出:
i:4,j:5
i:5,j:4
從**可以看出,經過3次異或變數就換掉了。
要理解上面交換原理,我們先看看什麼是異或:
-變數1
變數2變數3值11
10值20
10結果1
00二進位制異或的結果是:不同為1,相同為0
以上例子中,第一次異或,結果=1:
-變數1
變數2變數3值11
00值21
01結果0
01得出結果001就類似中間變數,在下面兩次異或時,都得到另乙個變數的值(4去異或就得到5,5去異或就得到4)
第二次異或,結果=4:
-變數1
變數2變數3值10
01值21
01結果1
00第三次異或,結果=5:
-變數1
變數2變數3值10
01值21
00結果1
01
注意:這種交換變數方法也只適用於整數,float、double之類的是不行的
不使用中間變數實現兩個變數的交換
在實現程式功能時,我們經常要進行變數數值的交換,最近學習到在c語言中不用定義新變數來實現兩個變數數值的交換的方法,跟大家分享一下!下面是演算法的實現 include int main 程式可能有點難理解。在順序結構程式中,程式一條一條的依次執行。為了避免值和變數名的混淆,假定使用者輸入的是a0和b0...
不使用其他變數,交換兩個變數的值
不使用其他變數,交換兩個變數的值。方法壹。因為異或運算滿足交換律和結合律,且 a a 0,0 a a,所以用下面過程可以交換 a,b 用 a,b 表示原始的 a,b 值 1 a a b 2 b a b b a b a b b a b b a 0 a 3 a a b a a b a b a b a a...
不使用臨時變數交換兩個變數的值(異或,加減,乘除)
一般我們交換兩個變數的值的時候,一般會用到乙個輔助變數,像這樣 int temp a a b b temp 當然,也有一些指令碼語言如python,lua只需要一行 就搞定 a,b b,a除了使用輔助變數之外,我們還可以通過其他方法來達到交換的目的。異或有一些有趣的用法,比如這裡有用異或的性質求出陣...