交換兩個變數的值 位運算

2021-10-09 19:39:13 字數 742 閱讀 7456

一般我們交換兩個變數的值,採用的方法都是設定乙個臨時變數,用於暫存變數的值,如下:

int tmp;

tmp = x;

x = y;

y = x;

當然也可以採用函式形式:

void

exchage

(int

*x,int

*y)

採用位運算的方式可以提交**的執行效率,通過^異或運算子便可以巧妙地交換兩個變數的值。

x = x ^ y;

y = x ^ y;

x = x ^ y;

下面我們做個簡單的證明,為了方便理解,我們採用下標的方式區分新的x(y)和舊的x(y)。

x_1 = x_0 ^ y_0;

y_1 = x_1 ^ y_0 =

(x_0 ^ y_0)

^ y_0 = x_0 ^

(y_0 ^y_0)

= x_0 ^

0= x_0;

x_2 = x_1 ^ y_1 =

(x_0 ^ y_0)

^ x_0 = y_0 ^

0= y_0;

這裡x_2y_1就是新的xy了,用函式實現也是一樣的道理,這裡就不贅述了。

交換兩個變數的值

交換兩個變數的值 交換兩個變數的值是我們學習c語言常見的問題,通常我們採取的方式是定義中間變數,通過中間變數交換這兩個變數值。1 直接在主函式裡完成 int a 2,b 3 int t t a a b b t 2 通過定義swap 完成交換,其中可以通過引用 位址傳遞完成變數值交換 引用 inclu...

交換兩個變數的值

有兩個整數a和b,下面將用四種方法把他們的值進行交換 方法1 借助臨時變數tmp include intmain 如果要求不能建立其他變數,還有下面的方法 方法2 巧妙進行數值運算 include intmain 方法3 二進位制異或運算 include intmain 整數10的二進位制數表示為 ...

交換兩個變數的值

交換兩個變數的值 方式一 定義臨時變數的方式 int temp num1 num1 num2 num2 temp 方式二 num1 num1 num2 num2 num1 num2 num1 num1 num2 好處 不用定義臨時變數 弊端 1 相加操作肯超過儲存範圍 2 有侷限性 只適用於數值型別...