【Python】通過異或的方法交換a,b的值
阿新 • • 發佈:2018-12-16
python中一道經典的面試題:
a = 3, b = 5,不使用中間變數交換 a 和 b 的值?
- 最簡潔的辦法:
a, b = b, a
- 使用異或,python中用^表示異或運算:
a = a ^ b
b = b ^ a
a = a ^ b
- 內部實現:
a = 3, b = 5
轉換為二進位制:a = 011, b = 101
1、a = a ^ b
a | 011 |
---|---|
b | 101 |
異或 | ------------- |
結果 | a = 110 |
2、b = b ^ a
b | 101 |
---|---|
a | 110 |
異或 | ------------- |
結果 | b = 011 |
3、a = a ^ b
a | 110 |
---|---|
b | 011 |
異或 | ------------- |
結果 | a = 101 |
- 在第二步和第三步得到b = 011,a = 101,即:a = 5,b = 3
異或
異或也叫半加運算,其運演算法則相當於不帶進位的二進位制加法:二進位制下用1表示真,0表示假,則異或的運演算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0 (同為0,異為1),這些法則與加法是相同的,只是不帶進位,所以異或常被認作不進位加法。
- 十進位制如何進行異或運算
1.進行異或計算前會把數值都轉換為二進位制
2.計算完成再把結果轉換為十進位制的