使用 int x = 10; int y = 20; 以上兩個變數, 要如何不使用第三個變數將x與y的值互換, 即輸出結果為 x = 20,y = 10。 簡單的方法: x = x+y; y = x-y; x = x-y; 可縮寫為: x=x+y-(y=x); 用XOR的方法: x = x ^ y; y = x ^ y; x = x ^ y; 可縮寫為: x = (x = x ^ y) ^ (y = x ^ y); XOR 的原理 語法 result = expression1 ^ expression2 Xor 運算子的語法具有以下幾個單元: 單元說明 result任意的數字變數。 expression1任意的運算式。 expression2任意的運算式。 如果運算式中只有一個的結果是 True,則 result 是 True。 然而,若運算式中有一個是 Null,則 result 也將會是 Null。 當兩個運算式都不是 Null, result 將根據下表來決定: 如果 expression1 為且 expression2 為則 result 為 TrueTrueFalse TrueFalseTrue FalseTrueTrue FalseFalseFalse Xor 可同時執行邏輯與位元運算子的運算。 兩運算式的位元比對會如下表所示,以"互斥-或"的邏輯來得到結果: 如果 expression1 為且 expression2 為則 result 為 000 011 101 110 ^ 運算子會強制轉型以配合資料型別。 然後 ^ 運算子會檢查以二進位表示的兩個運算式值在兩運算式上執行位元互斥 OR 運算。 運算式資料型別決定此運算子傳回的資料型別。 0101 (expression1) ^ 1100 (expression2) ----------------- 1001 (result) 二進位XOR快速記法: 相同為0 不同為1 其它網站參考: http://msdn.microsoft.com/zh-tw/library/y2hf3412(v=vs.80).aspx
- 2月 21 週四 201311:00
[JAVA]用二個變數,將值交換,用XOR在做swap功能
