学Python——第六课 按位异或交换整数变量值

     观察下面异或运算:

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,按上面程序编写一段程序交换它们的值。