版权声明:欢迎交流,转载请注明出处。 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.计算完成再把结果转换为十进制的