观察下面异或运算:
True ^ True ^ True = True
False ^ True ^ True = False
True ^ False ^ False = True
False ^ False ^ False = False
可以得到:一个逻辑值与同一逻辑值2次异或操作,该逻辑值不变。这个规律可以用于按位运算之中。一个整数每一位都是有这样的规律,这个整数也有这样的规律。
利用整数按位异或运算的规律,无需临时存放位置,交换两个整数的值。
Python源程序:
a=int(input("#请输入整数a的值:")) #a变量b=int(input("#请输入整数b的值:")) #b变量print("\n#你输入的两个整数:")
print("# a=%d b=%d" % (a,b) ) #打印变量值
#变量交换
#把a和b按位异或运算放进a中
a=a^b
print("\n#a和b按位异或运算放进a中后,两个整数:")
print("# a=%d b=%d" % (a,b) ) #打印变量值
#把a(这时是原a和b按位异或运算的值)和b按位异或运算放进b中,使b的值等于a的原值
b=a^b
print("\n#a和b按位异或运算放进b中后,这时b已经是原来a的值,两个整数:")
print("# a=%d b=%d" % (a,b) ) #打印变量值
#把a(这时是原a和b按位异或运算的值)和b(等于a的原值)按位异或运算放进a中,使a的值等于b的原值
a=a^b
print("\n#再一次a和b(已经是原来a的值)按位异或运算放进a中后,两个整数已经交换:")
print("# a=%d b=%d" % (a,b) ) #打印变量值
程序输出:
#请输入整数a的值:34
#请输入整数b的值:75
#你输入的两个整数:
# a=34 b=75
#a和b按位异或运算放进a中后,两个整数:
# a=105 b=75
#a和b按位异或运算放进b中后,这时b已经是原来a的值,两个整数:
# a=105 b=34
#再一次a和b(已经是原来a的值)按位异或运算放进a中后,两个整数已经交换:
# a=75 b=34
练习题:两个整数c=124,d=238,按上面程序编写一段程序交换它们的值。