【Python】通过异或的方法交换a,b的值

版权声明:欢迎交流,转载请注明出处。 https://blog.csdn.net/u013034226/article/details/85015135

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.计算完成再把结果转换为十进制的

猜你喜欢

转载自blog.csdn.net/u013034226/article/details/85015135