# 問題
一時変数を使わずに整数aとbを交換せよ.
# 答え
| |
a,bを交換前の数字とすると,
- (1):
(a - b) + b = a - (2):
a - (a - b) = b
xorを使う方が汎用性は高そう.a xor a = 0,0 xor a = aという性質を利用する.
| |
a,bを交換前の数字とすると,
- (1):
(a xor b) xor b = a xor (b xor b) = a xor 0 = a - (2):
(a xor b) xor a = b xor (a xor a) = b xor 0 = b