1. 程式人生 > >深入理解計算機系統-作業2.10

深入理解計算機系統-作業2.10

oid 位置 pla borde 作業2 nbsp body 開始 width

1 void inplace_swap(int *x, int *y){
2     *y = *x ^ *y;/*step1*/
3     *x = *x ^ *y;/*step2*/
4     *y = *x ^ *y;/*step3*/
5 }                        

以上代碼的作用是交換x,y指針指向的存儲位置的值,假設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,有 a ^ a = 0. 根據這一屬性,上面的表格可以變為:

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

深入理解計算機系統-作業2.10