二进制数字的对换

0101 0011

y 0110

x 0011

y 0101

两个2进制数字执行异或操作将不需要声明额外的临时变量即可对换

void swap x y
y x 异或y
x x异或y
y x异或y

void reverse_array (int a[], int cnt) { int first , last; for(first = 0, last = cnt - 1;first <= last;first++,last--) inplace_swap(&a[first]&, a[last]); }

A.对于2k+1 最后一轮循环的first 和 last值是k
B.因为函数inplace_swap的执行 两个相同的值执行异或操作将得0

你可能感兴趣的:(二进制数字的对换)