1. 程式人生 > >【Python】通過異或的方法交換a,b的值

【Python】通過異或的方法交換a,b的值

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.計算完成再把結果轉換為十進位制的