不使用臨時變數交換兩個整數變數

2021-10-01 05:01:53 字數 892 閱讀 2412

先看一下交換變數的常規方式:

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除了使用輔助變數之外,我們還可以通過其他方法來達到交換的目的。異或有一些有趣的用法,比如這裡有用異或的性質求出陣...