深入理解计算机系统第二版习题解答CSAPP 2.10

对于任一位向量a,有a ^ a = 0。考虑下面的程序:

1 void inplace_swap(int *x, int *y)
2 {
3     *y = *x ^ *y;
4     *x = *x ^ *y;
5     *y = *x ^ *y;
6 }

假设x和y指向的位置分别是a和b。完成下表:

步骤 *x *y
初始 a b
第一步 a a^b
第二步 a^(a^b) a^b
第三步 a^(a^b) a^(a^b)^(a^b)

 由于异或运算满足交换率和结合率,且a ^ 0 = 0, a ^   = ~a。所以有 

步骤 *x *y
初始 a b
第一步 a a^b
第二步 b a^b
第三步 b a

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。