深入理解计算机系统-作业2.10
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解计算机系统-作业2.10相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
深入理解计算机系统_3e 第十一章家庭作业 CS:APP3e chapter 11 homework